const ADD = "counter/add" ; const INCREMENT = "counter/increment" ; type Add = { type : typeof ADD ; payload : { amount : number ; } ; } ; type Increment = { type : typeof INCREMENT ; } ; type Action = Add | Increment ; export function add ( amount ) { return { type : ADD , payload : { amount } } ; } export function increment ( ) { return { type : INCREMENT } ; } export type State = { value : number ; } ; const initialState = { value : 0 } ; export default ( state = initialState , action ) => { switch ( action . type ) { case ADD : { return { ... state , value : state . value + action . payload . amount } ; } case INCREMENT : { return { ... state , value : state . value + 1 } ; } default : { return state ; } } } ;