minh-custom-hooks-release
Version:
Đây là custom hooks được viết bởi hoanggminh2702, bao gồm:
14 lines (13 loc) • 792 B
TypeScript
type B<T> = T extends string ? T : never;
type RemoveFirstElement<B extends any[]> = B extends [] ? [] : B extends [unknown, ...infer S] ? S : never;
export default function actionCreators<TPrefix extends string, TInitState extends any, TActions extends Record<string, (...args: [state: TInitState, ...any[]]) => TInitState>>(prefix: TPrefix, initState: TInitState, actions: TActions): {
reducer: (state: TInitState | undefined, action: {
type: `${TPrefix}/${B<keyof TActions>}`;
payload?: any;
}) => TInitState;
generateActions: { [index in B<keyof TActions>]: (...args: [...RemoveFirstElement<Parameters<TActions[index]>>]) => {
type: `${TPrefix}/${index}`;
payload?: [...RemoveFirstElement<Parameters<TActions[index]>>];
}; };
};
export {};