const a: Map<string | number, () => void> = new Map([
[
2,
() => {
console.log('a');
},
],
[
'2',
() => {
console.log('a');
},
],
]);
抛出以下错误
TS2322: 类型 'Map
尝试使用联合类型Map
问题是数组的推断类型,即:
((number | (() => void))[] | (string | (() => void))[])[]
如果您将数组键入为元组数组,Map 会正确推断出它自己的类型(TS Playground):
const arr: [string | number, () => void][] = [
[
2,
() => {
console.log('a');
},
],
[
'2',
() => {
console.log('a');
},
],
];
const a = new Map(arr);