何时使用地图与记录之间的差异

时间:2019-05-31 15:50:53

标签: typescript

我正在尝试将一些使用Map的Java代码映射到Typescript代码。 我最初的想法是在Typescript中使用Map's,但是对于我正在创建的界面而言,这没有奏效。取而代之的是,我发现了Records,它似乎完全模仿了Java的Map。

我的主要问题是什么时候应该在记录上使用打字稿的地图,什么时候应该在地图上使用打字稿的记录?

它们的工作方式有何不同?

viewMappings: Record<string, String[]>;
viewMappings: Map<String, String[]>;

例如

我希望它们在与我的国家/地区的交互中非常相似,但是它们却不一样,并且正在寻找有关两者差异的文档。

2 个答案:

答案 0 :(得分:2)

对我来说,重要的区别是,使用“记录”键查找键不会有选择地返回undefined,当我知道键不能丢失时,这简化了我的代码。

答案 1 :(得分:0)

记录定义为

type Record<K extends keyof any, T> = {
    [P in K]: T;
}

Map是本机JS ES6数据结构。记录只是一种代表性的说法,“该对象将被用作特定数据类型的键,值映射”。这是使用{}创建的普通对象。另一方面,Map对象具有here描述的一些独特特征,需要实例化为new Map()