Как установить тип переменной, но не присваивая ей значение?

В проекте Angular 11 с использованием Typescript со строгим режимом у меня есть:

export class AvatarComponent { 
  @Input() user: UserModel = null;
}

Я получаю ошибку компиляции:

Type 'null' is not assignable to type 'UserModel'.

Где UserModel:

export class UserModel {
  id?: number;
  name?: string;
}

Как установить тип переменной user на UserModel, но с нулевым значением?


person Miguel Moura    schedule 06.03.2021    source источник
comment
попробуйте new UserModel() идентификатор и имя будут нулевыми   -  person Beshambher Chaukhwan    schedule 06.03.2021
comment
Сделать тип UserModel | null?   -  person R. Richards    schedule 06.03.2021
comment
Кстати, UserModel — это класс, а не тип. Да, @R.Richards прав, хотя   -  person Beshambher Chaukhwan    schedule 06.03.2021
comment
Что не так только с @Input() user: UserModel; - зачем вам явно устанавливать null, когда по умолчанию он undefined?   -  person Nicholas K    schedule 06.03.2021


Ответы (2)


Если вы хотите установить null:

export class AvatarComponent { 
  @Input() user: UserModel | null = null;
}

Если вы хотите установить undefined:

export class AvatarComponent { 
  @Input() user: UserModel;
}
person Riad Baghbanli    schedule 06.03.2021
comment
Раньше я пытался установить его как неопределенное, но получил сообщение об ошибке. Свойство «пользователь» не имеет инициализатора и не определено в конструкторе. Я также добавил конструктор в класс UserModel, но не решил его. Я что-то упускаю? - person Miguel Moura; 06.03.2021
comment
Попробуйте пользователя @Input(): UserModel = undefined; - person Riad Baghbanli; 06.03.2021

Я верю, что это будет делать

export class AvatarComponent { 
  @Input() user = <UserModel>null;
}

https://stackblitz.com/edit/angular-ivy-7f6obj?file=src%2Fapp%2Fapp.component.ts

person Nibha    schedule 06.03.2021