2016-08-18 39 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; 
相关问题