比较可能为空的值与大于的惯用方式

问题描述 投票:0回答:1

Typescript 抱怨这种形式的表达:

if (foo?.length > 3) {

foo
是可能的 undefined (ts18048) ,这是真的。但如果它是真的,那么
foo?.length
将评估为
undefined
,它不会大于3,这就是我想要的行为。

有没有一种惯用的方法可以让 TypeScript 放心?

我可以做

if (foo && foo.length > 3)
但在这种情况下,
foo
是一个很长的表达式。

javascript typescript comparison
1个回答
1
投票

惯用的 TypeScript 确实会明确地测试

null

if (foo != null && foo.length > 3)

如果

foo
是一个较长的表达式,请为其声明一个新变量,无论如何您可能也会在
if
块中重用它。

但是,如果这真的不符合您的需求,您可以使用 nullish 合并来获取 TypeScript 接受的用于数字比较的值:

if (foo?.length ?? 0 > 3)

对于数组的长度,

0
似乎是一个合理的默认值,对于其他任何内容,您也可以使用
+Infinity
-Infinity

© www.soinside.com 2019 - 2024. All rights reserved.