2016-08-18 4 views
0

Ich schreibe einen Reduzierer und ich möchte RESET state.count = 0 tun. Dies gibt mir jedoch einen Fehler, number is not assignable to type CounterState.TypeScript-Fehlernummer ist nicht zuweisbar

Hier ist mein Code:

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; 
    } 
} 

I lodash der assign Funktion verwenden.

Dank

Antwort

3

Sie haben die Rückgabetyp Ihrer angegebenen Funktion als CounterState, aber für den Reset-Fall versuchen Sie, eine Zahl zurückzugeben (state.count=0 wertet die Zahl auf der rechten Seite aus, so dass Sie 0 zurückgeben)

Stattdessen sollten Sie ein Statusobjekt entweder zurückgeben die initial Konstante

case Types.RESET: 
    return initialState; 

Oder mit dem assign auch hier verwenden, wenn Sie andere Eigenschaften auf den Staat haben, Sie wünschen

case Types.RESET: 
    return assign({}, state, { 
     count : 0 
    }); 
zu erhalten
0

Sie funktionieren Ausgangsparameter ist CounterState, aber Sie versuchen, hier eine Nummer zurück:

return state.count=0; 

ersetzen Sie einfach mit

state.count = 0; 
return state; 
Verwandte Themen