Javascript TypeScript-如何使用数组映射到ES 6映射?

Javascript TypeScript-如何使用数组映射到ES 6映射?,javascript,typescript,dictionary,ecmascript-6,Javascript,Typescript,Dictionary,Ecmascript 6,假设我有一个键值对象数组: const data = [ {key: "object1", value: "data1"}, {key: "object2", value: "data2"}, {key: "object3", value: "data3"}, ] const mappedData = data.map(x => [x.key, x.value]); const ES6Map = new Map<string, string>(map

假设我有一个键值对象数组:

const data = [
    {key: "object1", value: "data1"},
    {key: "object2", value: "data2"},
    {key: "object3", value: "data3"},
]

const mappedData = data.map(x => [x.key, x.value]);

const ES6Map = new Map<string, string>(mappedData.values())
const数据=[
{键:“object1”,值:“data1”},
{键:“object2”,值:“data2”},
{键:“object3”,值:“data3”},
]
const mappedData=data.map(x=>[x.key,x.value]);
const ES6Map=新映射(mappedData.values())
如何将其转换为ES 6地图?它在JavaScript中工作,但TypeScript会抱怨。这里我得到的错误是,
类型为“IterableIterator”的参数不能赋值给类型为“ReadonlyArray”的参数。

类型“IterableTerator”中缺少属性“length”。

您需要执行
类型断言
,并告诉typescript您的
mappedData
是类型
Array
而不是
string[][]
,后者是
Map
构造函数所需的
Array
的子类型

Do

const mappedData = data.map(x => [x.key, x.value] as [string, string]);
而不是

const mappedData = data.map(x => [x.key, x.value]);
以及

const mappedData = data.map(x => [x.key, x.value] as [string, string]);

删除注释中指出的
values()
调用

只需删除
.values()
call,它就会得到类型为“string[][]”的
参数不可分配给类型为“ReadonlyArray”的参数。类型“string[]”不能分配给类型“[string,string]”。类型“string[]”中缺少属性“0”。
问题在于类型声明中。我不知道类型脚本,但是如果类型声明是可选的,为什么不直接执行
const ES6Map=newmap(mappedData)
?在这些示例中,
x
的类型是什么?