Skip to content

Commit 9febdfe

Browse files
committed
move async thunk creator module augmentation
1 parent 7ab0f2e commit 9febdfe

File tree

2 files changed

+47
-36
lines changed

2 files changed

+47
-36
lines changed

packages/toolkit/src/asyncThunkCreator.ts

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,54 @@ import type {
77
} from './createAsyncThunk'
88
import { createAsyncThunk } from './createAsyncThunk'
99
import type { CaseReducer } from './createReducer'
10-
import type { ReducerCreator, ReducerDefinition } from './createSlice'
10+
import type {
11+
CreatorCaseReducers,
12+
ReducerCreator,
13+
ReducerCreatorEntry,
14+
ReducerDefinition,
15+
} from './createSlice'
1116
import { ReducerType } from './createSlice'
17+
import type { Id } from './tsHelpers'
18+
19+
declare module '@reduxjs/toolkit' {
20+
export interface SliceReducerCreators<
21+
State,
22+
CaseReducers extends CreatorCaseReducers<State>,
23+
Name extends string,
24+
ReducerPath extends string,
25+
> {
26+
[ReducerType.asyncThunk]: ReducerCreatorEntry<
27+
AsyncThunkCreator<State>,
28+
{
29+
actions: {
30+
[ReducerName in keyof CaseReducers]: CaseReducers[ReducerName] extends AsyncThunkSliceReducerDefinition<
31+
State,
32+
infer ThunkArg,
33+
infer Returned,
34+
infer ThunkApiConfig
35+
>
36+
? AsyncThunk<Returned, ThunkArg, ThunkApiConfig>
37+
: never
38+
}
39+
caseReducers: {
40+
[ReducerName in keyof CaseReducers]: CaseReducers[ReducerName] extends AsyncThunkSliceReducerDefinition<
41+
State,
42+
any,
43+
any,
44+
any
45+
>
46+
? Id<
47+
Pick<
48+
Required<CaseReducers[ReducerName]>,
49+
'fulfilled' | 'rejected' | 'pending' | 'settled'
50+
>
51+
>
52+
: never
53+
}
54+
}
55+
>
56+
}
57+
}
1258

1359
export interface AsyncThunkSliceReducerConfig<
1460
State,

packages/toolkit/src/createSlice.ts

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
import type { Action, UnknownAction, Reducer } from 'redux'
22
import type { Selector } from 'reselect'
3-
import type {
4-
AsyncThunkCreator,
5-
AsyncThunkSliceReducerDefinition,
6-
} from './asyncThunkCreator'
73
import type {
84
ActionCreatorWithoutPayload,
95
PayloadAction,
@@ -12,7 +8,6 @@ import type {
128
_ActionCreatorWithPreparedPayload,
139
} from './createAction'
1410
import { createAction } from './createAction'
15-
import type { AsyncThunk } from './createAsyncThunk'
1611
import type {
1712
ActionMatcherDescriptionCollection,
1813
CaseReducer,
@@ -135,36 +130,6 @@ export interface SliceReducerCreators<
135130
}
136131
}
137132
>
138-
[ReducerType.asyncThunk]: ReducerCreatorEntry<
139-
AsyncThunkCreator<State>,
140-
{
141-
actions: {
142-
[ReducerName in keyof CaseReducers]: CaseReducers[ReducerName] extends AsyncThunkSliceReducerDefinition<
143-
State,
144-
infer ThunkArg,
145-
infer Returned,
146-
infer ThunkApiConfig
147-
>
148-
? AsyncThunk<Returned, ThunkArg, ThunkApiConfig>
149-
: never
150-
}
151-
caseReducers: {
152-
[ReducerName in keyof CaseReducers]: CaseReducers[ReducerName] extends AsyncThunkSliceReducerDefinition<
153-
State,
154-
any,
155-
any,
156-
any
157-
>
158-
? Id<
159-
Pick<
160-
Required<CaseReducers[ReducerName]>,
161-
'fulfilled' | 'rejected' | 'pending' | 'settled'
162-
>
163-
>
164-
: never
165-
}
166-
}
167-
>
168133
}
169134

170135
export type ReducerCreators<

0 commit comments

Comments
 (0)