最近在纠结这个问题。
@Component({
template: `<div *ngIf="data$ | async"></div>`
})
class MyComponent implements NgOnInit {
data$: Observable<string>
constructor() { this.data$ = ... }
ngOnInit() { this.data$ = ... }
}
类似上面这样的代码中, data$的初始化逻辑应该写在constructor
中还是应该写在ngOnInit
里面呢。目前纠结的点在于:
- 写在
ngOnInit
里面的话, ts会报成员未初始化的错误, 需要在声明属性的时候添加非空断言data$!
,现在感觉非空断言应该尽量少用或者不用。 - 写在
constructor
里面的话,目前见到的大部分ng项目的初始化逻辑都写在ngOnInit
里面。
有点纠结, 目前还是写在ngOnInit
里面, 大家是怎么选择的呢?
一般是写在ngOnInit里面的。
至于未初始化的问题。webstrom编译器也有提示,类型可以加上undefined
originSecret: string | undefined;