Skip to content

Commit

Permalink
fix dispatch type defination
Browse files Browse the repository at this point in the history
  • Loading branch information
lake2 committed Feb 18, 2020
1 parent 0e0f435 commit d07f198
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "imdux",
"version": "0.1.5",
"version": "0.1.6",
"description": "A redux helper for react & hooks & typescript developers.",
"main": "dist/imdux.js",
"types": "src/types.d.ts",
Expand Down
5 changes: 5 additions & 0 deletions src/test/imdux.test.ts
Expand Up @@ -31,6 +31,9 @@ describe("imdux object state", () => {
array(draft: State, payload: Array<number>) {
draft.array = payload;
},
optional(draft: State, payload?: number) {
draft.count -= 1;
},
};

const reducers2 = {
Expand Down Expand Up @@ -144,6 +147,8 @@ describe("imdux object state", () => {
Dispatch.home.hide("3");
Dispatch.home.hide(null);
(a: "1" | "2" | null) => Dispatch.home.hide(a);
Dispatch.home.optional(1);
Dispatch.home.optional(undefined);
});
});

Expand Down
4 changes: 3 additions & 1 deletion src/types.d.ts
Expand Up @@ -17,8 +17,10 @@ export namespace Imdux {
redux: Redux.Store<any, Redux.AnyAction>;
}

export type InferActionDispathFunction<T> = T extends (...arg: infer A) => any ? A extends [any] ? () => void : T extends (draft: any, payload: infer R) => any ? (payload: R) => void : never : never;

export type InferActionDispath<T> = {
[K in keyof T]: T[K] extends (draft: any) => any ? () => void : T[K] extends (draft: any, payload: infer R) => any ? (payload: R) => void : unknown
[K in keyof T]: InferActionDispathFunction<T[K]>
}

export type InferDispatch<T> = {
Expand Down

0 comments on commit d07f198

Please sign in to comment.