检查后未定义?

时间:2018-05-07 22:44:30

标签: typescript

strictNullChecks开启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'. } } 之后

我收到了错误

  

对象可能是“未定义的”。

EOT

我无法理解检查后如何定义它。

1 个答案:

答案 0 :(得分:1)

这是打字稿中的known issue

该问题的

TL; DR ,Typescript 可以进行这些检查,但是由于编译器的性能成本很高,开发人员选择不这样做。

解决方法是使用非空断言运算符(!)告诉编译器该值不是nullundefined。对于这个例子:

return data[i] && data[i]!.value === 0