检查值是真值还是 0 的简洁方法是什么?

时间:2021-05-11 16:25:55

标签: javascript typescript

我正在尝试简化打字稿中索引值是否为 nullundefined 的检查。

    const indexValue: number;
    if(!!indexValue || indexValue === 0) {
     // Do something
    }

由于 0 是假的,似乎需要在带有 indexValue === 0 的条件中明确检查它。

是否有更清晰简洁的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

是的,有。由于这是一个索引值,大概您愿意接受任何数字。这可能表明 typeof indexValue === "number" 是正确的方法,因为这将拒绝 nullundefined,但会接受 0。但是,此条件也会接受其他不需要的值,例如 NaNInfinity-Infinity,它们也是数字。

幸运的是,该语言为我们提供了一个内置函数,可以一次测试所有这些:isFinite()。所以你的条件变成:

if (isFinite(indexValue)) {
    // ...
}

请注意,此函数将接受转换为有限数字的字符串。还有 Number.isFinite(),它只接受数字,但在 IE 中不受支持。如果您想拒绝所有字符串,请将 isFinite() 检查与 typeof 检查结合起来:

if (typeof indexValue === "number" && isFinite(indexValue)) {
    // ...
}
相关问题