Typescript:比较表达式中报告的对象可能为空

ht4b089n  于 2023-01-14  发布在  TypeScript
关注(0)|答案(2)|浏览(116)

我在比较中得到TS18047,其中空比较的错误结果是预期结果。
因此,基本上:

const a: number | null = null;
if (a >= 250) { /* will not execute because result of comparison is false */ }

这就是我想要的。而且在我引入 typescript 之前,这段代码也能工作。
我知道我可以只做一个空值检查,但有像十个分支比较这个变量与不同的数字。
只有最后的else处理实际的空值。
我真的需要检查null吗?或者我可以不检查它吗?

ckx4rj1h

ckx4rj1h1#

从技术上讲这是可行的,因为你不能把空值和一个数字进行比较,因为它总是假的,所以你需要先进行空值检查。

if (a && a >= 250) {
      // do something

 }

这也可以,但不是最佳实践,因为它违背了 typescript 的目的

if (a! >= 250) {
      // do something

 }
xu3bshqb

xu3bshqb2#

typeof方法有时对我很有效。

if (typeof a == 'number' && a >= 250) {
        //do something 
}

相关问题