我对Typescript还是很陌生,并在调用函数检查其是否可用后尝试访问optionnal类属性。实际检查还依赖于其他属性,我宁愿不重复代码,因为该检查在多个地方使用。
这是一个简短的示例:
class Test {
private ar?: string[];
public hasArray(): boolean { // Guard here ?
return !!this.ar;
}
public push(s: string) {
if (this.hasArray()) {
this.ar.push(s); // Error
}
}
}
是否有办法通过“记录”调用this.ar
后hasArray
可用来使此代码起作用?
我尝试过的事情:
public hasArray(): boolean
替换为public hasArray(): this.ar is string[]
->不支持public hasArray(): boolean
替换为public hasArray(): this is { ar: string[] }
->类型冲突@ @ this.ar.push()
我知道我可以将if (this.hasArray())
转换为if (this.hasArray() && this.ar)
的事实,但是感觉更像是一个头,我想知道是否有人知道解决此问题的方法。
预先感谢