!: запись в Angular - PullRequest
       2

!: запись в Angular

2 голосов
/ 24 сентября 2019

Я нашел !: нотацию, используемую в Угловые документы об устаревании .

@Input() tpl !: TemplateRef<any>;
@ContentChild(TemplateRef) inlineTemplate !: TemplateRef<any>;

Здесь тоже найдено .

@Input() id !: string;

Я не уверен, что за терминологией (или концепцией) стоит обозначение !:в угловых.Поиск в Google не сильно мне помог.Пробовал SymbolHound и Angular Docs для одного и того же, но все напрасно.

Было бы полезно, если бы кто-то мог пролить на него свет, например, как он функционирует, или поделиться документомссылка как минимум.

Ответы [ 2 ]

5 голосов
/ 24 сентября 2019

Восклицательный знак ! говорит о том, что поле имеет значение ненулевое не неопределенное (см. Документация Microsoft по TypeScript ).

Двоеточие : это просто разделитель между именем поля и типом.

3 голосов
/ 24 сентября 2019

Если у вас есть 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, но поверьте мне, я позабочусь об этом».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...