0
今天我发现了Typescript'map'类型,我想用它来声明一个键值字典。我知道我可以用数组来做,但它只是用来玩游戏。我想要做的是声明一个变量来的图标的类别字符串指定给对象类型,所以:Typescript中的替代地图定义
iconForObjectType [OBJ_TYPE(数)] ===>图标类(字符串)
的代码是:
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]
];
谢谢!
嗨!我之前尝试过,但是我得到了这个错误:'Type'{ObjectTypes:any:'icon_computer':any:'icon_printer':any}'不可分配为键入'{[type:number]:string}''。 对象字面量可能只指定已知属性,而类型'{[type:number]:string}''中不存在'ObjectTypes'。我认为问题是使用枚举'ObjectTypes',如果我改变它的数字,它工作正常。但我需要枚举,因为它有很多地方参考的全局参数,所以我认为我会让它是... – Fel
我更新了答案,以表明您正在使用计算属性。但是ObjectTypes的定义是什么?如果您需要帮助,您需要提供[完整](https://stackoverflow.com/help/mcve)示例。可能有一种方法可以将枚举键向下转换为数字,并且可以为您工作。 – jcalz
对不起,在这里你有对象类型枚举: '出口枚举对象类型{ OBJ_COMPUTER = 21, OBJ_PRINTER = 22, OBJ_SCANNER = 23, //地段更 OBJ_ANY = -9999 }' 我声明它在我导入所有应用程序组件的全局选项服务中。正如你所看到的,在内部它只是一个数字列表... – Fel