const a: Map<string | number, () => void> = new Map([
[
2,
() => {
console.log('a');
},
],
[
'2',
() => {
console.log('a');
},
],
]);
抛出以下错误TS2322:类型'Map〈number|(()=〉void),number|(()=〉void)〉'不能赋值给类型'Map〈string|数字,()=〉void〉'。 类型编号|(()=〉void)“"不能赋给类型"”string|数字'。 类型“()=〉void”不能分配给类型“string”|数字'。 类型“()=〉void”不能分配给类型“number”。
尝试使用联合类型Map〈NumberOrString,()=〉void〉,抛出相同的错误
2条答案
按热度按时间4ioopgfo1#
问题出在数组的推断类型,即:
如果你将数组作为一个元组数组输入,Map会正确地推断出它自己的类型(TS Playground):
w41d8nur2#
它无法推断类型,只是帮助它一点