Lambda-School-Labs/startup-grant-database-fe

View on GitHub
src/store/utils/createReducer.ts

Summary

Maintainability
A
0 mins
Test Coverage
import {Reducer} from "redux";

interface FunctionMap {
    [key: string]: any
}

type CreateReducer<S = any, F extends FunctionMap = any> = (state: S, fnMap: F) => Reducer;

export const createReducer: CreateReducer = (initialState, fnMap) => (state = initialState, {type, payload}) => {
    const handler = fnMap[type];
    return handler ? handler(state, payload) : state;
};