在我的带有严格空检查的Typescript 2.0项目中,我有一个数组:
private _timers: ITimer[]
和if语句:
if(this._timers.length > 0){
this._timers.shift().stop();
}
但是我收到了编译错误:
Object is possibly 'undefined'
我怎样才能说服编译器它未被定义?
我可以像这样绕过它:
const timer = this._timers.shift();
if(timer){
timer.stop();
}
但这似乎有点过于冗长,而且不必要地使用变量来解决输入限制。
由于
答案 0 :(得分:5)
有non-null assertion operator,在2.0发行说明中提到(并将出现在documentation soon中),适用于与此类似的情况。它的后缀!
,它会抑制此错误:
if(this._timers.length > 0){
this._timers.shift()!.stop();
}
答案 1 :(得分:1)
您确定_timers
已初始化吗?
例如:
private _timers: ITimer[] = [];
或者在构造函数中:
constructor() {
this._timers = [];
...
}