传递给新地图的二维数组在打字稿中失败
无法new Map在 Typescript 中传递二维数组:
const myArray: string[][] = [['DE', 'Germany'], ['AU', 'Austria']];
const myMap = new Map(myArray);
对我来说失败了我TS2769: No overload matches this call.
在这里做错了吗?
TS 版本 3.9.9
回答
如果你翻阅日志,你会看到一条错误消息
目标需要 2 个元素,但源可能更少。
问题是它['DE', 'Germany']会自动类型扩展为string[]- 一个字符串数组,它可能有两个元素,或者一个,或者零 - 但是 Map 构造函数要求这样的条目数组至少有 2 个元素。数组中项数为 2 的类型信息丢失。
我会将数组声明与以下内容放在同一行new Map:
const myMap = new Map([['DE', 'Germany'], ['AU', 'Austria']]);
另一种选择是
const arr: [string, string][] = [['DE', 'Germany'], ['AU', 'Austria']];
表明该数组实际上确实有 2 个项目。
另请注意,变量名称不能以数字开头 - 以其他内容开头,可能是字母。