Typescript中的替代地图定义

时间:2017-10-06 12:25:47

标签: typescript dictionary

今天我发现了Typescript'map'类型,我想用它来声明一个键值字典。我知道我可以使用数组做到这一点,但它只是为了玩游戏。我想要做的是声明一个变量,将一个图标类字符串分配给一个对象类型,所以:

iconForObjectType [OBJ_TYPE(number)] ===> icon class(s​​tring)

代码是:

let iconForObjectType : { [obj_type : number] : string } = {};

iconForObjectType[ObjectTypes.OBJ_COMPUTER] = 'icon_computer';
iconForObjectType[ObjectTypes.OBJ_PRINTER] = 'icon_printer';
iconForObjectType[ObjectTypes.OBJ_SCANNER] = 'icon_scanner';
iconForObjectType[ObjectTypes.OBJ_MONITOR] = 'icon_monitor';
[ ETC ETC ]

这种定义它的方式过于重复。是否有更容易的替代方案,如下所示?

iconForObjectType = [
  ObjectTypes.OBJ_COMPUTER : 'icon_computer',
  ObjectTypes.OBJ_PRINTER : 'icon_printer',
  [ETC]
];

谢谢!

1 个答案:

答案 0 :(得分:0)

如果你在文字中使用键值对,那么你需要大括号:

iconForObjectType = {
  [ObjectTypes.OBJ_COMPUTER] : 'icon_computer',
  [ObjectTypes.OBJ_PRINTER] : 'icon_printer',
  // ...
};

毕竟,它只是一个带数字键的对象。

编辑:

实际上这些是计算属性,因此您需要在属性键名称周围使用方括号。