是否可以从TypeScript将识别的数组中删除未定义?

时间:2019-03-04 02:24:58

标签: typescript

是否有一种干净方便的方式来做类似的事情:

const x: (string|undefined)[] = ['aaa', undefined, 'ccc'];
const y = _.filter(x, it => !!it);

以便TypeScript将y的类型识别为string[],而不必编写自己的函数进行过滤? (即,是否有一种方法可以使语言的特征变窄,例如将if块应用于数组?)

1 个答案:

答案 0 :(得分:4)

不确定在这里为什么需要lodash,但是可以:

const x: (string|undefined)[] = ['aaa', undefined, 'ccc'];
const y = x.filter((it): it is string => it !== undefined);

在这种情况下,y被推断为类型string[]!!it也将被推断为类型string[],但具有从数组中滤除空字符串条目的副作用。