Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { ActionPayload, AllActionsPayload, Constants, IActionMap } from './actionFactory';
- type ReducerCase<P> = (state: IStore, payload: P) => IStore;
- type IReducer = { [P in keyof Record<Constants, ReducerCase<AllActionsPayload>>]: ReducerCase<IActionMap[P]> };
- export const reducer: IReducer = {
- ACTION_NAMESPACE: (state, payload) => {
- const { id, mode } = payload;
- return state
- },
- };
- export const communicatorReducer = (reducers: Record<Constants, ReducerCase<AllActionsPayload>>) => (
- state = initialState,
- { type, payload }: ActionPayload<Constants, AllActionsPayload>
- ): IStore => (reducers[type] ? reducers[type](state, payload) : state);
- export default communicatorReducer(reducer);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement