【发布时间】:2018-10-17 19:21:35
【问题描述】:
在打开 strictNullChecks 的情况下关注 code 时出现错误
对象可能是“未定义”。
class Smth {
private data: Array<{ value: number} | undefined> = [];
public doSmth(i: number) {
const data = this.data;
return data[i] && data[i].value === 0
// ^^^^^^^ Object is possibly 'undefined'.
}
}
我无法理解它在检查后如何未定义。
【问题讨论】:
-
Here's the related issue., TL;DR,由于编译器性能成本,打字稿不会检查这个。同时,您可以使用非空断言:
data[i]!.value === 0 -
我建议不要在代码的多个位置使用相同的变量名,虽然可以这样做,但这会使代码混乱。您有一个名为“data”的常量变量,还有一个同名的类的私有成员。问问自己,你真正在代码中使用的是哪一个?
-
@JonnathanQ,但它们指的是同一个对象。
-
@CRice,为什么不回答?
-
@Qwertiy,我认为肯定会有重复的,我打算在评论后投票,但现在我找不到。我现在将其发布为答案。
标签: typescript