Typescript 何时使用映射与记录之间的差异

Typescript 何时使用映射与记录之间的差异,typescript,Typescript,我正在尝试映射一些Java代码,这些代码使用map来键入脚本代码。 我最初的想法是在Typescript中使用Map,但对于我正在创建的界面,这并没有奏效。相反,我找到的记录似乎完全模仿了Java的地图 我的主要问题是什么时候我应该在记录上使用Typescript的地图,什么时候我应该在地图上使用Typescript记录 它们是如何工作的 viewMappings: Record<string, String[]>; viewMappings: Map<String, Stri

我正在尝试映射一些Java代码,这些代码使用map来键入脚本代码。 我最初的想法是在Typescript中使用Map,但对于我正在创建的界面,这并没有奏效。相反,我找到的记录似乎完全模仿了Java的地图

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

它们是如何工作的

viewMappings: Record<string, String[]>;
viewMappings: Map<String, String[]>;
viewMappings:记录;
视图映射:映射;
比如说

我希望它们在与我的状态非常相似的接口中工作,但它们没有,我正在寻找关于两者差异的文档。

记录定义为

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

Map
是一种原生JS ES6数据结构。Record仅仅是一种表示“该对象将被用作特定数据类型的键、值映射”的代表性方式。它是使用
{}
创建的普通对象。另一方面,
Map
对象有一些独特的特性,需要实例化为
newmap()

对我来说,重要的区别在于,对于记录,键查找不会选择性地返回未定义的,这在我知道键不能丢失时简化了我的代码。

是JS中的一个数据类,可以使用任何类型的对象作为键,而
记录
只是一个描述对象的类型定义,其中键必须是JS对象键(字符串、数字或符号)。