UNPKG

deox

Version:

Functional Type-safe Flux Standard Utilities

54 lines (53 loc) 2.03 kB
export declare type Action<TType extends string, TPayload = undefined, TMeta = undefined> = TPayload extends undefined ? (TMeta extends undefined ? { type: TType; } : { type: TType; meta: TMeta; }) : (TPayload extends Error ? (TMeta extends undefined ? { type: TType; payload: TPayload; error: true; } : { type: TType; payload: TPayload; meta: TMeta; error: true; }) : (TMeta extends undefined ? { type: TType; payload: TPayload; } : { type: TType; payload: TPayload; meta: TMeta; })); export declare type AnyAction = Action<string>; /** * Minimal (type-only) action factory * @example * const clearTodos = action('[Todo] truncate'); */ export declare function createAction<TType extends string>(type: TType): Action<TType>; /** * Action with error factory * @example * const fetchTodosRejected = (payload: Error) => action('[Todo] fetch rejected', payload); */ export declare function createAction<TType extends string, TPayload extends Error>(type: TType, payload: TPayload): Action<TType, TPayload>; /** * Action with non-error payload factory * @example * const addTodo = ({ name, completed = false }: Todo) => action('[Todo] add', { name, completed }); */ export declare function createAction<TType extends string, TPayload>(type: TType, payload: TPayload): Action<TType, TPayload>; /** * Action with error and meta factory * @example * const fetchTodosRejected = (payload: Error, meta?: Meta) => action('[Todo] fetch rejected', payload, meta); */ export declare function createAction<TType extends string, TPayload extends Error, TMeta>(type: TType, payload: TPayload, meta: TMeta): Action<TType, TPayload, TMeta>; /** * Action with payload and meta factory * @example * const addTodo = ({ name, completed = false }: Todo, meta?: Meta) => action('[Todo] add', { name, completed }, meta); */ export declare function createAction<TType extends string, TPayload, TMeta>(type: TType, payload: TPayload, meta: TMeta): Action<TType, TPayload, TMeta>;