2016-08-02 4 views
4

と私はtypescriptですでObject.assign()を入れ子になっていますTypescript error TS1005: ':'が必要です。 Object.assign()

(<any>Object).assign({}, state, { 
    action.item_id: (<any>Object).assign({}, state[action.item_id], { 
     label_value: action.value 
    }) 
}) 

これは、これらのエラーを得られます。

ERROR in ./src/reducers/ItemsReducer.ts 
(2,19): error TS1005: ':' expected. 

ERROR in ./src/reducers/ItemsReducer.ts 
(2,26): error TS1005: ',' expected. 

ERROR in ./src/reducers/ItemsReducer.ts 
(2,28): error TS1136: Property assignment expected. 

奇妙なことは、私はキーなどを修正する場合にエラーが消えるということです。

(<any>Object).assign({}, state, { 
    "fixed_key": (<any>Object).assign({}, state[action.item_id], { 
     label_value: action.value 
    }) 
}) 

これは無知私を残し、なぜそれが、彼は後に数文字を文句を言わないときにその場所でaction.item_idを呼び出すことがOKではないでしょうか?

答えて

4

オブジェクト宣言でプロパティ名として変数を使用する場合、あなたは括弧の中に入れてcomputed property表記を使用する必要があります。

(<any>Object).assign({}, state, { 
    [action.item_id]: (<any>Object).assign({}, state[action.item_id], { 
     label_value: action.value 
    }) 
}) 
+0

ありがとう! :)今は魅力のように働いています。 – user3091275

関連する問題