如果在构造函数中使用之前未定义字段,请添加警告

时间:2018-02-01 21:09:29

标签: angular typescript angular5 typescript2.0

我有这段代码:

  @Input() myUuid;
  private dcs: HistoryService;

  constructor(private hsf: HistoryServiceFactory) {
    console.log('my uuid:', this.myUuid.toString());
  }

据我所知,TypeScript在这里没有发出警告:

enter image description here

但myUuid应始终未定义,因为只有在ngOnInit()被触发后才能保证初始化。 TS是否可以知道这一点并显示(编译)警告?

1 个答案:

答案 0 :(得分:4)

将TypeScript更新到最新版本。 2.7引入了这个功能:检查明确的分配。

这在https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html

中有记录

具体做法是:

  

TypeScript 2.7引入了一个名为--strictPropertyInitialization的新标志。此标志执行检查以确保类的每个实例属性在构造函数体中初始化,或者由属性初始值设定项初始化。例如

确保使用--strict

请注意,如果您有想要的属性在构建后保持未初始化状态,则现在需要将它们标记为可选(property?)。在这种情况下,这始终是一种很好的做法,但现在已经执行。