import { Reducer, ReducersMapObject } from 'redux'; import { IAction } from './interfaces'; export default function reducerFactory(initialState: S, handlers: ReducersMapObject): Reducer { return function reducer(state: S = initialState, action?: IAction): S { if (action && handlers.hasOwnProperty(action.type)) { return handlers[action.type](state, action); } else { return state; } }; }