2017-09-21 37 views
0

を持っていない:列挙 - >私はStringに列挙型をマップしようとしている何のインデックス署名

enum Status { 
    NEW = "NEW", 
    INPROCESSING = "IN PROCESSING", 
    DONE = "DONE" 
}; 

const statusToColor: { [key in Status ]: string } = { 
    "NEW": "blue", 
    "IN PROCESSING": "yellow", 
    "DONE": "green" 
} 

この時点まですべてがうまくています。 しかし、私は試してみてください。

EDITを:私は多くの問題を単純化して、実際の問題は、まだどこかにあると思われるよう、ようだ:私はしようとすると、

ザ・だけで、何のインデックスエラーが発生していませんこの場合

const statusArrayToColors = (statusArray: Status[]): string[] => { 
    return statusArray.map(status => statusToColor[status]) 
} 

statusToColor[status] 

:このように、アレイから "statusToColorを" フィードコンパイラによると、インデックスの署名はありません。

+0

私の答えは見ましたか?タイプミスを修正して編集したコードは私のために働く。 – lilezek

答えて

2

コードに入力ミスがあります。これは私Version 2.5.0-dev.20170629の作品:

enum Status { 
    NEW = "NEW", 
    INPROCESSING = "IN PROCESSING", 
    DONE = "DONE" 
}; 

const statusToColor: { [key in Status ]: string } = { 
    "NEW": "blue", 
    "IN PROCESSING": "yellow", 
    "DONE": "green" 
} 

const color: string = statusToColor[Status.NEW]; 

statusToColorの行を確認してください。タイプを定義するには、コロン:を使用する必要があります(=と等しくない)。

注:you need at least typescript version 2.4.

+0

バージョン2.4の新しい文字列リテラルを列挙型で使用することができます – rjustin

+0

速い応答に感謝します! 私は多くの問題を単純化しましたが、実際のエラーはどこかにあるようです。あなたは更新された質問を見てみたいですか? –

関連する問題