Skip to content

Commit d4f070a

Browse files
authored
Merge pull request #1 from mrcrowl/master
Dispatch with strongly-typed promise return types
2 parents 745996a + 10ceee7 commit d4f070a

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/index.ts

+15
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@ export type PayloadlessMutationHandler<TModuleState> =
1313

1414
export type ActionHandler<TModuleState, TRootState, TPayload> =
1515
(injectee: ActionContext<TModuleState, TRootState>, payload: TPayload) => void | Promise<any>;
16+
export type PromiseActionHandler<TModuleState, TRootState, TPayload, TPromise> =
17+
(injectee: ActionContext<TModuleState, TRootState>, payload: TPayload) => Promise<TPromise>;
1618
export type PayloadlessActionHandler<TModuleState, TRootState> =
1719
(injectee: ActionContext<TModuleState, TRootState>) => void | Promise<any>;
20+
export type PromisePayloadlessActionHandler<TModuleState, TRootState, TPromise> =
21+
(injectee: ActionContext<TModuleState, TRootState>) => Promise<TPromise>;
1822

1923
export type GetterHandler<TModuleState, TRootState, TResult> =
2024
(state: TModuleState, rootState: TRootState) => TResult;
@@ -27,6 +31,11 @@ export type DispatchAccessor<TModuleState, TRootState, TPayload> =
2731
payload: TPayload) => Promise<any[]>;
2832
export type PayloadlessDispatchAccessor<TModuleState, TRootState> =
2933
(store: Store<TRootState> | ActionContext<TModuleState, TRootState>) => Promise<any[]>;
34+
export type PromiseDispatchAccessor<TModuleState, TRootState, TPayload, TPromise> =
35+
(store: Store<TRootState> | ActionContext<TModuleState, TRootState>,
36+
payload: TPayload) => Promise<TPromise>;
37+
export type PromisePayloadlessDispatchAccessor<TModuleState, TRootState, TPromise> =
38+
(store: Store<TRootState> | ActionContext<TModuleState, TRootState>) => Promise<TPromise>;
3039

3140
export type CommitAccessor<TModuleState, TRootState, TPayload> =
3241
(store: Store<TRootState> | ActionContext<TModuleState, TRootState>,
@@ -42,12 +51,18 @@ export interface StoreAccessors<TModuleState, TRootState> {
4251
handler: PayloadlessMutationHandler<TModuleState>):
4352
PayloadlessCommitAccessor<TModuleState, TRootState>;
4453

54+
dispatch<TPayload, TPromise>(
55+
handler: PromiseActionHandler<TModuleState, TRootState, TPayload, TPromise>):
56+
PromiseDispatchAccessor<TModuleState, TRootState, TPayload, TPromise>;
4557
dispatch<TPayload>(
4658
handler: ActionHandler<TModuleState, TRootState, TPayload>):
4759
DispatchAccessor<TModuleState, TRootState, TPayload>;
4860
dispatchNoPayload(
4961
handler: PayloadlessActionHandler<TModuleState, TRootState>):
5062
PayloadlessDispatchAccessor<TModuleState, TRootState>;
63+
dispatchNoPayload<TPromise>(
64+
handler: PromisePayloadlessActionHandler<TModuleState, TRootState, TPromise>):
65+
PromisePayloadlessDispatchAccessor<TModuleState, TRootState, TPromise>;
5166

5267
read<TResult>(
5368
handler: GetterHandler<TModuleState, TRootState, TResult>):

0 commit comments

Comments
 (0)