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