2016-11-21 65 views
2

是否有任何方法來定義可在索引器中用作字符串鍵的typescript文字類型?用作索引器鍵的Typescript文字類型

type TColorKey = 'dark' | 'light'; 

interface ColorMap { 
    [period: TColorKey]: Color; 
} 

這引發錯誤:An index signature parameter type must be 'string' or 'number'.

+0

您可以使用枚舉? – Amy

+0

@Amy不,您只能將數字常量分配給枚舉,而不是字符串。這就是字符串文字類型存在的原因。對於VS代碼 –

回答

3

是的,這可能是由於一種稱爲Mapped types新功能。只要確保你使用的是typScript編譯器的夜間版本([email protected]),因爲它尚未穩定版本(當時我寫這篇文章)。

type TColorKey = "dark" | "light"; 

type TColorMap = { [P in TColorKey]: Color }; 
+0

一個多觀察 如果你想使用編輯器'打字稿@ next'語言規範(所以它不會引發錯誤): 1)運行'NPM安裝-g打字稿@ next' 2)添加'「typescript.tsdk」:「yourGlobalNpmPath/node_modules/typescript/lib」到'settings.json' –