TypeScript中的Map <string,myobject =“”>和{[index:string]:MyObject}有什么区别?

时间:2019-04-22 20:56:20

标签: performance typescript dictionary

如果我想使用string:object字典在TypeScript中进行类型检查,那么我知道有两种方法可以做到:

const m = new Map<string, MyObject>();
m.set("a", new MyObject("a"));
m.set("b", new MyObject("b"));

const m : {[index: string]: MyObject} = {};
m["a"] = new MyObject("a");
m["b"] = new MyObject("b");

它们各自的优缺点是什么?如果还有另一种声明和使用string:MyObject字典的方法?

1 个答案:

答案 0 :(得分:1)

正如this答案中所详述(在我的投票之前!),Typescript在支持Map之前通常使用具有键和值类型的对象(有时称为哈希图)。

const m : {[index: string]: MyObject} = {};

此方法的问题在于,键只能是字符串或数字类型,实际上,使用什么类型的键并不重要,因为数字/字符串仍然可以互换接受(仅强制执行值)

Typescript现在具有对ES6 Map类型的本机支持,对于上述键,它没有任何缺点。至于哈希图与地图相比的优势,我看不到任何东西。