2016-11-21 4 views
2

インデクサの文字列キーとして使用できる、typescriptリテラルタイプを定義する方法はありますか?インデクサのキーとして使用されるTypescriptリテラルタイプ

type TColorKey = 'dark' | 'light'; 

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

これは、エラーがスローされます:An index signature parameter type must be 'string' or 'number'.

+0

enumを使用できますか? – Amy

+0

@Amyいいえ、数値定数は文字列ではなく列挙体にのみ割り当てることができます。そのため、文字列リテラル型が存在します。 –

答えて

3

はい、それはMapped typesと呼ばれる新機能のおかげで可能です。 typescriptコンパイラの夜間バージョン([email protected])を使用していることを確認してください。まだ安定したビルドになっていないので(私がこれを書いている時点では)

type TColorKey = "dark" | "light"; 

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

VSコードのもう1つの観察 1) 'npm install -g typescript @ next'を実行してください。 2) '' typescript.tsdk ":" yourGlobalNpmPath/node_modules/typescript/lib "'を 'settings.json'に追加してください –

関連する問題