查看下面代碼中的 B 類 ready() 函式。打字稿說, someVar 可能是未定義的。事實是這不是由于父方法拋出的錯誤。是否可以告訴打字稿檢查這樣的事情?如果可能,我不想使用感嘆號。也許有一些我顯然不知道的 tsconfig 屬性?
打字稿游樂場
class A {
protected someVar: number | undefined;
constructor(someVar: number | undefined) {
this.someVar = someVar;
}
protected ready():void {
if (this.someVar === undefined) throw Error('someVar undefined');
console.log('I AM READY!!!');
}
public get someVarOfA(): number | undefined {
return this.someVar;
}
}
class B extends A {
constructor(someVar?: number){
super(someVar);
this.ready();
}
protected ready():void {
super.ready();
console.log('I do not come, if someVar undefined here');
this.someVar;
}
}
class C {
private b: B;
constructor(){
this.b = new B();
console.log(this.b.someVarOfA);
}
}
new C();
uj5u.com熱心網友回復:
Afaik“欺騙”編譯器允許這樣做的唯一方法是禁用strictNullChecks. 然后你可以做這樣的事情:
class A {
protected someVar: number;
constructor(someVar: number) {
this.someVar = someVar;
}
...
}
class B extends A {
constructor(someVar?: number){
super(someVar);
this.ready();
}
protected ready():void {
super.ready();
console.log('I do not come, if someVar undefined here');
this.someVar!;
}
}
打字稿游樂場
uj5u.com熱心網友回復:
可以在這樣操作之前加上if
if(this.someVar !== undefined) {
this.someVar;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367569.html
標籤:javascript 打字稿
上一篇:(反應路由器v6)“錯誤:useNavigate()只能在<Router>組件的背景關系中使用”hoc組件中的錯誤
下一篇:更改陣列中單詞的顏色
