import { Action } from './index' type NumberKeys = keyof { [K in keyof T]: T[K] extends number ? K : never } type ArrayKeys = keyof { [K in keyof T]: T[K] extends any[] ? K : never } export const increment = (field: NumberKeys, value: number = 1) => (state: T): T => ({ ...state, [field]: state[field] as unknown as number + value, }) export const addFromPayload = (to?: ArrayKeys) => (state: any, { payload }: Action) => (to ? { ...state, [to]: [ ...state[to], payload, ], } : { ...state, ...payload }) export const udpateFromPayload = (state: any, { payload }: Action) => ({ ...state, ...payload, })