检查一个数组是否存在且长度非零的最简单的Typescript习惯用法是什么?

vatpfxk5  于 2022-12-14  发布在  TypeScript
关注(0)|答案(2)|浏览(203)

我经常有一个集合可能是未定义的或者是空的,所以我写这个:

if ((thingies?.length ?? 0) > 0) ...

我想从总体上看,这并不坏,但并不漂亮。我 * 真正 * 想要的是一个类似于Bash的操作符,表示“这个变量存在,是一个数组,并且至少有一个元素”:

if (thingies#) ... // it's safe to access thingies[0]

我很确定这不是一个东西。但是,什么是最简洁的 typescript 表达?

uklbhaso

uklbhaso1#

我会简单地这样写:

if (Array.isArray(thingies) && thingies.length > 0) {
  [...]
}

在我看来,不是最短的路,而是更清楚(也更正确)的路。

编辑:

如果感觉它太长而您又经常需要它,您也可以简单地将它定义为一个函数:
第一次

erhoui1w

erhoui1w2#

考虑到undefined0都是假值,你可以写:

if (array?.length)

arrayundefined,它将返回false;或者它已定义,如果length === 0,它将返回false

编辑:

如果您首先希望确保对象是数组,则可以事先使用Array.isArray执行检查:

if (Array.isArray(object) && object.length)

相关问题