我有一个number[] | string[]
,我想过滤它。问题是过滤函数将类型改为(number | string)[]
。
// list of numbers OR list of strings
let myList = Math.random() < 0.5 ? [1, 2, 3] : ["a", "b", "c"];
// filter the list
const filtered = myList.filter((x) => { return true; });
// oh no, the result is Array<number | string> instead of (number[] | string[])
myList = filtered;
最后一行错误:
Type '(string | number)[]' is not assignable to type 'number[] | string[]'.
Type '(string | number)[]' is not assignable to type 'number[]'.
Type 'string | number' is not assignable to type 'number'.
Type 'string' is not assignable to type 'number'.(2322)
我该如何表达这个事实:数组不能混合,但它可以包含任一类型的元素?