我经常有一个集合可能是未定义的或者是空的,所以我写这个:
if ((thingies?.length ?? 0) > 0) ...
我想从总体上看,这并不坏,但并不漂亮。我 * 真正 * 想要的是一个类似于Bash的操作符,表示“这个变量存在,是一个数组,并且至少有一个元素”:
if (thingies#) ... // it's safe to access thingies[0]
我很确定这不是一个东西。但是,什么是最简洁的 typescript 表达?
我经常有一个集合可能是未定义的或者是空的,所以我写这个:
if ((thingies?.length ?? 0) > 0) ...
我想从总体上看,这并不坏,但并不漂亮。我 * 真正 * 想要的是一个类似于Bash的操作符,表示“这个变量存在,是一个数组,并且至少有一个元素”:
if (thingies#) ... // it's safe to access thingies[0]
我很确定这不是一个东西。但是,什么是最简洁的 typescript 表达?
2条答案
按热度按时间uklbhaso1#
我会简单地这样写:
在我看来,不是最短的路,而是更清楚(也更正确)的路。
编辑:
如果感觉它太长而您又经常需要它,您也可以简单地将它定义为一个函数:
第一次
erhoui1w2#
考虑到
undefined
和0
都是假值,你可以写:array
是undefined
,它将返回false
;或者它已定义,如果length === 0
,它将返回false
。编辑:
如果您首先希望确保对象是数组,则可以事先使用
Array.isArray
执行检查: