如果我想使用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字典的方法?
答案 0 :(得分:1)
正如this答案中所详述(在我的投票之前!),Typescript在支持Map之前通常使用具有键和值类型的对象(有时称为哈希图)。
const m : {[index: string]: MyObject} = {};
此方法的问题在于,键只能是字符串或数字类型,实际上,使用什么类型的键并不重要,因为数字/字符串仍然可以互换接受(仅强制执行值)
Typescript现在具有对ES6 Map类型的本机支持,对于上述键,它没有任何缺点。至于哈希图与地图相比的优势,我看不到任何东西。