Если у вас есть strictNullChecks
, то все, что вы украсите @Input
, обычно будет жаловаться.Например ...
public class MyComponent {
@Input()
public myField: string;
constructor() {}
}
Это приведет к жалобам TS.Это связано с тем, что myField
не был объявлен обнуляемым, поэтому его никогда не следует устанавливать на null
или undefined
.В то же время он не инициализируется в конструкторе, поэтому он получит начальное значение undefined
.
Обычно это нормально.Мы знаем, что Angular установит значение вскоре после строительства.Если мы отметим поле nullable public myField: string?
, тогда мы будем иметь дело с this field may be null
ошибками повсюду, когда мы попытаемся использовать его.
Так что, в качестве компромисса, мы добавляем !
объявление поля, чтобы сказать Typescript «Я знаю, что это выглядит так, как будто оно инициализируется как null / undefined, но поверьте мне, я позабочусь об этом».