javascript - TypeScript - 如何使用数组映射到 ES 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>(mappedData.values())
如何将其转换为 ES 6 地图?它适用于 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
is 类型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()
如评论中指出的那样挂断电话。
推荐阅读
- java - 将字符串转换为保留小数位的浮点数
- php - 如何使用 jQuery 和 AJAX 处理多个复选框更改事件?
- ffmpeg - 来自具有长冻结尾端的源的 FFmpeg 延时
- c - linux执行shell脚本,将某些内容回显到文件中
- asp.net-mvc - 无法使用 Asp.net Mvc Json 在下拉菜单上加载数据
- javascript - 如何在 web 项目中包含 jsonpipe
- javascript - 想要使用 show_menus 数组显示子菜单
- bit-manipulation - 具有恒定差异和按位与零的对数
- javascript - 当用户使用反应在输入字段中键入第二个@时如何显示建议下拉列表?
- javascript - Ajax 加载方法不在 div 顶部加载