考虑打开以下代码:strictNullChecks
var a: (number | null)[] = [0, 1, 2, 3, null, 4, 5, 6];
var b: { value: number; }[] = a.map(x => x != null && { value: x }).filter(Boolean);
由于以下原因无法编译:
Type '(false | { value: number; })[]' is not assignable to type '{ value: number; }[]'.
Type 'false | { value: number; }' is not assignable to type '{ value: number; }'.
Type 'false' is not assignable to type '{ value: number; }'.
但绝对清楚,那false
将被 过滤掉.filter(Boolean)
。
同样的问题null
。
有没有办法(除了写作as number[]
)来标记该值不包含false
or null
?