假设我有一个键值对象数组:
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())
如何将其转换为 ES 6 map ?它可以在 JavaScript 中运行,但 TypeScript 会报错。这里我得到了错误Argument of type 'IterableIterator<string[]>' is not assignable to parameter of type 'ReadonlyArray<[string, string]>'.
Property 'length' is missing in type 'IterableIterator<string[]>'.
最佳答案
你需要做type assertion
并告诉 typescript 你的 mappedData
类型为Array<[string,string]>
而不是string[][]
这是 Array<[any,any]>
的子类型根据Map
的需要构造函数。
做
const mappedData = data.map(x => [x.key, x.value] as [string, string]);
而不是
const mappedData = data.map(x => [x.key, x.value]);
还有
删除values()
正如评论中指出的那样打电话。
关于javascript - TypeScript - 如何使用数组映射到 ES 6 映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53492591/