redux-smart-creators
Version:
Smart creators for actions and reducers
49 lines (48 loc) • 1.51 kB
TypeScript
/**
* Basic Action without payload
* @example: { type: 'getAllEntries' }
* */
export interface BasicAction<T extends string> {
type: T;
}
/**
* Action with guaranteed payload
* @example: { type: 'getByID', payload: 10 }
* */
export interface ActionWithPayload<T extends string, P extends any> extends BasicAction<T> {
payload: P;
}
/**
* Unknown action, can has payload
* */
export interface UnknownAction<T extends string> extends BasicAction<T> {
payload?: any;
}
/**
* Function for creating payload in payload injectors
* @example: actionCreator('actionType').load(_PayloadFunction here_)
* @example: asyncActionCreator('actionType').load({
* INIT: _PayloadFunction here_,
* SUCCESS: _PayloadFunction here_
* })
* */
export interface PayloadFunction<ActionPayload = any> {
(...args: any): ActionPayload;
}
/**
* Payload function that just return single argument;
* Use for creating default payload in payload injectors
* if no arguments provided (for action Creators), or if
* using "payload" helper function (for async action creators)
* @example: actionCreator('actionType').load<number>()
* @example: asyncActionCreator('actionType').load({
* INIT: payload<number>()
* })
*/
export interface BasicPayloadFunction<ActionPayload> {
(payload: ActionPayload): ActionPayload;
}
/**
* Default step for async action creators
*/
export declare type DefaultAsyncStep = 'INIT' | 'LOADING' | 'SUCCESS' | 'FAILURE';