我从API接收到的数据格式如下:我收到的JSON是带有数字键的映射条目。但是,由于编译器抱怨由于明显的原因缺少Map方法,因此我无法将结果分配给下面的数据结构。
entryContainer = {
entries: {
1: {
title: 'title 1'
},
2: {
title: 'title 2'
}
}
export interface EntryContainer {
entries: Map<number, Entry>;
}
export interface Entry {
title: string;
}
// doesn't work
let result: EntryContainer = entryContainer;
有什么优雅的方法可以用上述格式接收的数据初始化Entrycontainer吗?
答案 0 :(得分:0)
您收到的数据上的entries
不是Map
,因此您必须创建一个Map
。
好消息是,Object.entries
和new Map
的实现非常简单:
let result: EntryContainer = {
entries: new Map(Object.entries(entryContainer.entries).map(([key, value]) => [+key, value]))
};
那个:
Object.entries
来获取[string, string]
的数组。map
来获取[number, string]
的数组。 (请记住,即使entryContainer
对象中的键被写为数字文字,对象中的键也始终是字符串或符号。)[number, string]
的结果数组并创建entries
映射EntryContainer
包装器您需要确保正确设置target
和/或lib
选项。 Map
当然是ES2015。 Object.entries
是ES2017。