问题描述
class Foo {
bar: number;
constructor() {
this.bar = 42;
}
}
如果我对其进行重构,使其看起来像这样:
class Foo {
bar: number;
constructor() {
this.init();
}
init() {
this.bar = 42;
}
}
然后,假设在编译器中启用了strictPropertyInitialization
,我将收到一个错误Property 'bar' has no initializer and is not definitely assigned in the constructor.
。
在我看来,该属性在后一种情况下的定义与前一种情况一样明确。如果引入了Foo
的其他一些子类,从而改变了init()
的实现,以至于不再是这种情况(可能会在规范中添加AFAIK“密封” /“最终”),那么将错误的位置放在所述子类中似乎是合乎逻辑的。我不确定为什么编译器无法识别它。
另一个不错的选择是使用非空断言bar!: number;
,但这会削弱严格性。
类似的问题已经问过好几次了,但是我不认为这是完全相同的问题。
Vue Prop has no initializer and is not definitely assigned in the constructor讨论了用于用默认值初始化属性的Vue装饰器。我不熟悉Vue,但我怀疑在那种情况下,该属性可能未在构造函数中初始化,但是在Vue对象生命周期的其他阶段不久之后,编译器将无法识别该属性。
无论如何,非常琐碎,没有什么无法解决的。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)