在 TypeScript 中,这两种声明映射的方式有什么区别?
在 TypeScript 中,我可以这样声明一个映射:
{[key:number]string}
作为一个键是数字而值是字符串的映射的例子。但我也可以这样做:
Map<number, string>
我们为什么有两种方法来做同一件事,它们之间有什么区别?
答案#1
一个 Map 是一个原生的 JS 对象,它保存键值对。所以你可以这样做:
let myMap = new Map();
myMap.set('bla','blaa');
myMap.set('bla2','blaa2');
那将创建一个包含这些值的地图。
你的另一种类型,{[key:number]: string},定义了一个对象,其键类型为number,值类型为string。Map和普通对象的主要区别在于,Map 的键可以是任何类型(不像对象那样必须是字符串、数字或 Symbol),并且它的性能也更优。请参阅 MDN 文档获取完整的区别列表。
