Typescript: object可能在比较表达式中报告为null



我在比较中得到TS18047,其中null比较的错误结果是期望的结果。

所以,基本上:

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

这就是我要的。在我引入typescript之前,这些代码也可以运行。

我知道我可以做一个空检查,但是这个变量和不同的数字进行比较,好像有10个分支。

只有最终的else处理实际的空值。

我是否真的需要检查是否为空,或者我是否有可能摆脱这个?

从技术上讲,这应该是可行的,因为你不能将null值与数字进行比较,因为它总是为假,所以你需要先进行null检查。

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

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

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

typeof方法有时对我有效。

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

最新更新