字体,--strictNullChecks
模式。
假设我有一个可为空的字符串数组 (string | null)[]
。用什么样的 单一表达式方法去除所有空值,使得结果具有 string[]
类型?
const array: (string | null)[] = ["foo", "bar", null, "zoo", null];
const filterdArray: string[] = ???;
Filter 在这里不起作用:
// Type '(string | null)[]' is not assignable to type 'string[]'
array.filter(x => x != null);
数组理解可以工作,但 TypeScript 不支持它们。
实际上,这个问题可以推广到过滤任何联合类型的数组的问题,方法是从联合中删除具有特定类型的条目。但是让我们把注意力集中在具有 null 或者可能未定义的联合上,因为这些是最常见的用例。