Angular Свойство с интерфейсом типа выдает ошибку при объявлении - PullRequest
1 голос
/ 15 апреля 2020

У меня есть модель, как показано ниже

export interface IAdminUser {
  name: string
  role:string
  office:{
    department:string
    designation:string
  }
}

В моем app.component.ts я заполняю ее некоторыми данными

 export class AppComponent {
      data = {
        name: "Admin",
        mob: 8888888888,
        email: "admin@gmail.com",
        role: '1',
        office: {
          department: "IT",
          designation: "Admin",
          code: "ADMIN123"
        }
      };

      adminInfor: IAdminUser = {};

      ngOnInit() {
        this.adminInfor.name = this.data.name;
        this.adminInfor.role = this.data.name;
        this.adminInfor.office.department = this.data.office.department;
        this.adminInfor.office.designation = this.data.office.designation;
      }
    }

Я получаю ошибку в строке ниже

adminInfor: IAdminUser = {};

// В типе {} отсутствуют следующие свойства из типа IAdminUser; "name, role et c

Если я декаляризирую это следующим образом

adminInfor: IAdminUser = {
  name:'',
  role:'',
  office:{
    department:'',
    designation:'',
  }
}

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

Ответы [ 2 ]

3 голосов
/ 15 апреля 2020

Свойства type interface IAdminUser являются обязательными, но в этой строке

adminInfor: IAdminUser = {};

вы пропустили инициализацию свойств.

Или инициализируйте их или сделать их необязательными в type interface как

interface IAdminUser {
  name?: string,
  role?: string,
  office?: {
    department: string,
    designation: string,
  }
}
2 голосов
/ 15 апреля 2020

Вы не можете инициализировать переменную как {}, которая имеет тип Class/Interface.

В вашем случае adminInfor: IAdminUser = {}; обязательно выдаст ошибку из-за проверки типа времени компиляции.

Вместо '' вы также можете инициализировать как:

adminInfor: IAdminUser = {
  name: null,
  role: null,
  office:{
    department: null,
    designation: null,
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...