Назначьте начальные нулевые значения и инициализируйте массив объектов в TypeScript

#angular #typescript #interface

Вопрос:

Это моя модель:

 export interface IUser{
    id: number;
    firstName: string;
    lastName: string;
    accounts?:
    {
        userID: number;
        accType: AccType;
        badges: Badge[];
        accountStatus: AccStatus;
    }[];
}
 

В моем файле user.service.ts я инициализирую пользователя перед его использованием в службах HTTP. Но, похоже, я не могу правильно инициализировать учетные записи, так как не могу получить доступ к их значениям.

 private initializeUser(): IUser{
    return {
      id:0,
      firstName: null as any,
      lastName: null as any,
      accounts:{
         userID: null as any,
        accType: null as any,
        badges: null as any,
        accountStatus: null as any
        }
    };
  }
 

Кроме того, я думаю, что, поскольку значки представляют собой массив, я также неправильно их инициализирую.

Ответ №1:

Я бы предложил сделать идентификаторы факультативными. Это позволит вам узнать, является ли пользователь новым или нет.

 export interface IUser {
    id?: number;
    firstName: string;
    lastName: string;
    accounts?:
    {
        userID?: number;
        accType: AccType | null;
        badges: Badge[];
        accountStatus: AccStatus | null;
    }[];
}


private initializeUser(): IUser{
    return {
      firstName: '',
      lastName: '',
      accounts:[{        // Don't forget the [...], it's an array
        accType: null,
        badges: [],
        accountStatus: null
      }]
    };
  }
 

Ответ №2:

 private initializeUser(): IUser{
    return {
      id:0,
      firstName: null as string,
      lastName: null as string,
      accounts:{
         userID: null as number,
        accType: null as accType,
        badges: null as Badge[],
        accountStatus: null as AccStatus
        }
    };
  }