ts-action-immer
Version:
Immer-based reducer creators for Redux
11 lines (10 loc) • 847 B
TypeScript
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>;