Typescript 抱怨这种形式的表达:
if (foo?.length > 3) {
说
foo
是可能的 undefined (ts18048) ,这是真的。但如果它是真的,那么foo?.length
将评估为undefined
,它不会大于3,这就是我想要的行为。
有没有一种惯用的方法可以让 TypeScript 放心?
我可以做
if (foo && foo.length > 3)
但在这种情况下,foo
是一个很长的表达式。
惯用的 TypeScript 确实会明确地测试
null
:
if (foo != null && foo.length > 3)
如果
foo
是一个较长的表达式,请为其声明一个新变量,无论如何您可能也会在 if
块中重用它。
但是,如果这真的不符合您的需求,您可以使用 nullish 合并来获取 TypeScript 接受的用于数字比较的值:
if (foo?.length ?? 0 > 3)
对于数组的长度,
0
似乎是一个合理的默认值,对于其他任何内容,您也可以使用 +Infinity
或 -Infinity
。