2016-08-18 18 views
0

我正在寫一個reducer,我想RESET做state.count = 0。但是,這給我一個錯誤,number is not assignable to type CounterStateTypeScript錯誤號不可分配

這裏是我的代碼:

export interface CounterState { 
    count: number; 
}; 

const initialState: CounterState = { 
    count: 0 
}; 

export default function counter(state = initialState, action: Action): CounterState { 
    switch (action.type) { 
    case TYPES.INCREMENT: 
     return assign({}, state, { 
     count: state.count + 1 
     }); 
    case TYPES.DECREMENT: 
     return assign({}, state, { 
      count : state.count - 1 
     }); 
    case TYPES.RESET: 
     //error here 
     return state.count=0; 
    default: 
     return state; 
    } 
} 

我使用lodash的分配功能。由於

回答

3

您指定的返回類型更換您的函數爲CounterState,但對於重置的情況,您正嘗試返回一個數字(state.count=0評估爲右邊的數字,因此您將返回0)

相反,你應該返回或者使用的初始化狀態不變

case Types.RESET: 
    return initialState; 

或者使用分配以及這裏,如果你對國家的其他屬性,您希望保留

case Types.RESET: 
    return assign({}, state, { 
     count : 0 
    }); 
的狀態對象
0

你函數的輸出參數爲CounterState,而是你正試圖在這裏返回一個數字:

return state.count=0; 

只是

state.count = 0; 
return state;