import { IAction, IActionCreator, IPayloadCreator, IMetaCreator } from './interfaces'; function id(x: T): T { return x; } export default function makeActionsCreator( type: string, payloadCreator?: P|IPayloadCreator

, metaCreator?: IMetaCreator ): IActionCreator { const finalPayloadCreator: IPayloadCreator

= payloadCreator instanceof Function ? payloadCreator : id; return function(...args: any[]): IAction { let action: IAction = { payload: finalPayloadCreator(...args), type, }; if (metaCreator && metaCreator instanceof Function) { action.meta = metaCreator(...args); } if (args.length === 1 && args[0] instanceof Error) { action.error = true; } return action; }; }