我正在尝试将一些使用 Map 的 Java 代码映射到 Typescript 代码。我最初的想法是在 Typescript 中使用 Map,但是对于我创建的界面,这没有用。相反,我发现 Records 似乎完美地模拟了 Java 的 Map。
我的主要问题是我什么时候应该在 Records 上使用 Typescript 的 Maps,什么时候应该在 Maps 上使用 Typescripts Records?
它们的工作方式有何不同?
viewMappings: Record<string, String[]>;
viewMappings: Map<String, String[]>;
Run Code Online (Sandbox Code Playgroud)
例如
我希望这些可以在与我所在州非常相似的界面中工作,但他们没有,我正在寻找两者差异的文档。
Avi*_*ish 12
记录定义为
type Record<K extends keyof any, T> = {
[P in K]: T;
}
Run Code Online (Sandbox Code Playgroud)
WhileMap是原生的 JS ES6 数据结构。Record 只是一种代表性的说法,“这个对象将被用作特定数据类型的键值映射”。它是一个使用{}. Map另一方面,对象具有这里描述的一些独特特征,需要实例化为new Map()
小智 9
对我来说,重要的区别在于,使用 Record 键查找不会选择性地返回 undefined,这在我知道键不能丢失时简化了我的代码。
这个问题有很多(正确的!)答案,但没有关于何时使用的指南。
Record(或常规对象)通常会更快,并且对于应用程序内部的任何内容来说都是一个不错的选择。特别是对于您知道会出现哪种键的情况。
Map如果您想要非字符串键(包括数字和对象),则更好。它也更适合用户输入,因为它不会遇到相同的原型污染问题。
| 归档时间: |
|
| 查看次数: |
6996 次 |
| 最近记录: |