我有这段代码:
@Input() myUuid;
private dcs: HistoryService;
constructor(private hsf: HistoryServiceFactory) {
console.log('my uuid:', this.myUuid.toString());
}
据我所知,TypeScript在这里没有发出警告:
但myUuid应始终未定义,因为只有在ngOnInit()
被触发后才能保证初始化。 TS是否可以知道这一点并显示(编译)警告?
答案 0 :(得分:4)
将TypeScript更新到最新版本。 2.7引入了这个功能:检查明确的分配。
这在https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-7.html
中有记录具体做法是:
TypeScript 2.7引入了一个名为--strictPropertyInitialization的新标志。此标志执行检查以确保类的每个实例属性在构造函数体中初始化,或者由属性初始值设定项初始化。例如
确保使用--strict
请注意,如果您有想要的属性在构建后保持未初始化状态,则现在需要将它们标记为可选(property?
)。在这种情况下,这始终是一种很好的做法,但现在已经执行。