Я немного искал SO, пытаясь решить эту проблему, но мой код, кажется, немного выходит за рамки стандартного «выталкивания объекта в массив».
У меня есть интерфейс, который вводит свойство "Год" с другим интерфейсом в виде массива:
export interface IUser {
Nickname: string;
FirstName: string;
LastName: string;
Email: string;
EmergencyContact: string;
EmergencyNumber: string;
Year: Array<IYear>;
IsTeacher: boolean;
IsAdmin: boolean;
Uid: string;
}
export interface IYear {
CalendarYear: string;
PassType: string;
UserItinerary: IItinerary;
WaiverStatus: boolean;
Guests: Array<IGuest>;
SignupDate: string;
}
В определенный момент я собираюсь передать некоторые данные formGroup в типизированное свойство IYear:
user: IUser = <IUser>{};
createUser(
firstName: string,
lastName: string,
email: string,
uid: string,
isTeacher: boolean,
passType: string) {
const year: IYear = {
CalendarYear: this.calendarYear,
PassType: passType,
UserItinerary: {} as IItinerary,
WaiverStatus: false,
Guests: [],
SignupDate: this.dateTime
}
this.user.FirstName = firstName;
this.user.LastName = lastName;
this.user.Email = email;
this.user.Uid = uid;
this.user.IsTeacher = isTeacher;
this.user.IsAdmin = false;
this.user.Year.push(year);
return this.user;
}
Проблема в том, что когда я пытаюсь передать свойство 'year' внутри createUser в массив 'this.user.Year', я получаю ошибку
Невозможно прочитать свойство 'push' из неопределенного
Я пытался явно передать значения ключом:
this.user.Year['CalendarYear'] = year.CalendarYear;
Но это не сработало. Кто-нибудь может указать на мою ошибку здесь?