Объявление хорошее, но вы забыли инициализировать свою переменную, поэтому при ее использовании она undefined
.
Я бы порекомендовал инициализировать ее как null
, а затем выполнить присвоение:
public userDetails: DataModel.UserDetails = null;
ngOnInit() {
this.userDetails = {
userName: 'Guest',
userId: 0,
};
}
Обратите внимание, что вам нужно предоставить userId
, или Typescript сообщит вам, что userId
не определен во время вашего назначения.
Если вы не хотите указывать userId
, объявите ваш интерфейс как:
declare module DataModel {
interface UserDetails {
userName: string;
userId?: number;
}
}
Или введите свой атрибут как:
public userDetails: Partial<DataModel.UserDetails>;
, что позволит каждому ключу UserDetails быть необязательным
Альтернатива
Вы можете инициализировать свои данные следующим образом:
public userDetails: DataModel.UserDetails = {
userName: null,
userId: 0,
};
Затем использовать их как:
ngOnInit() {
this.userDetails.userName = 'Guest';
}