将对象推送到嵌套的 Typescript 数组中,得到错误:无法读取未定义的属性“推送”

Neu*_*tra -2 arrays typescript angular

我一直在四处寻找试图解决这个问题,但我的代码似乎有点超出标准的“将对象推入数组”。

我有一个接口,它使用另一个接口作为数组键入“Year”属性:

   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;
    }
Run Code Online (Sandbox Code Playgroud)

在某个时候,我将一些 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;
  }
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试将 createUser 中的 'year' 属性传递到 'this.user.Year' 数组时,出现错误

无法读取未定义的属性“推送”

我已经尝试通过键显式传递值:

this.user.Year['CalendarYear'] = year.CalendarYear;
Run Code Online (Sandbox Code Playgroud)

但这没有用。有人能在这里指出我的错误吗?

Saj*_*ran 5

在将对象推入其中之前,用户对象中的 Year 数组应初始化为空。

this.user.Year = [];
Run Code Online (Sandbox Code Playgroud)

进而,

this.user.Year.push(year);
Run Code Online (Sandbox Code Playgroud)