UNPKG

ts-action-immer

Version:

Immer-based reducer creators for Redux

11 lines (10 loc) 847 B
import { Draft } from "immer"; import { Action, ActionCreator, ActionType, On } from "ts-action"; export declare type OnReducer<S, C extends ActionCreator[]> = (state: Draft<S>, action: ActionType<C[number]>) => S | void; export declare function on<C1 extends ActionCreator, S>(creator1: C1, reducer: OnReducer<S, [C1]>): On<S>; export declare function on<C1 extends ActionCreator, C2 extends ActionCreator, S>(creator1: C1, creator2: C2, reducer: OnReducer<S, [C1, C2]>): On<S>; export declare function on<C1 extends ActionCreator, C2 extends ActionCreator, C3 extends ActionCreator, S>(creator1: C1, creator2: C2, creator3: C3, reducer: OnReducer<S, [C1, C2, C3]>): On<S>; export declare function on<S, C extends { type: string; action: Action; }>(...args: (C | ((state: Draft<S>, action: C["action"]) => S | void))[]): On<S>;