传递给新地图的二维数组在打字稿中失败

无法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 个项目。

另请注意,变量名称不能以数字开头 - 以其他内容开头,可能是字母。


以上是传递给新地图的二维数组在打字稿中失败的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>