@@ -7,18 +7,14 @@ import type {
77} from './createAsyncThunk'
88import { createAsyncThunk } from './createAsyncThunk'
99import type { CaseReducer } from './createReducer'
10- import type {
11- CreatorCaseReducers ,
12- ReducerCreator ,
13- ReducerDefinition ,
14- } from './createSlice'
10+ import type { ReducerCreator , ReducerDefinition } from './createSlice'
1511import { ReducerType } from './createSlice'
1612import type { Id } from './tsHelpers'
1713
18- export type AsyncThunkSliceReducerConfig <
14+ export type AsyncThunkSliceReducers <
1915 State ,
20- ThunkArg extends any ,
21- Returned = unknown ,
16+ ThunkArg ,
17+ Returned ,
2218 ThunkApiConfig extends AsyncThunkConfig = { } ,
2319> = {
2420 pending ?: CaseReducer <
@@ -39,6 +35,14 @@ export type AsyncThunkSliceReducerConfig<
3935 AsyncThunk < Returned , ThunkArg , ThunkApiConfig > [ 'rejected' | 'fulfilled' ]
4036 >
4137 >
38+ }
39+
40+ export type AsyncThunkSliceReducerConfig <
41+ State ,
42+ ThunkArg ,
43+ Returned ,
44+ ThunkApiConfig extends AsyncThunkConfig = { } ,
45+ > = AsyncThunkSliceReducers < State , ThunkArg , Returned , ThunkApiConfig > & {
4246 options ?: AsyncThunkOptions < ThunkArg , ThunkApiConfig >
4347}
4448
@@ -116,41 +120,38 @@ export interface AsyncThunkCreator<
116120
117121export type AsyncThunkCreatorExposes <
118122 State ,
119- CaseReducers extends CreatorCaseReducers < State > ,
123+ Definition extends ReducerDefinition ,
120124> = {
121- actions : {
122- [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
123- State ,
124- infer ThunkArg ,
125- infer Returned ,
126- infer ThunkApiConfig
127- >
128- ? AsyncThunk < Returned , ThunkArg , ThunkApiConfig >
129- : never
130- }
131- caseReducers : {
132- [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
133- State ,
134- any ,
135- any ,
136- any
137- >
138- ? Id <
139- Pick <
140- Required < CaseReducers [ ReducerName ] > ,
141- 'fulfilled' | 'rejected' | 'pending' | 'settled'
142- >
125+ action : Definition extends AsyncThunkSliceReducerDefinition <
126+ State ,
127+ infer ThunkArg ,
128+ infer Returned ,
129+ infer ThunkApiConfig
130+ >
131+ ? AsyncThunk < Returned , ThunkArg , ThunkApiConfig >
132+ : never
133+
134+ caseReducer: Definition extends AsyncThunkSliceReducerDefinition <
135+ State ,
136+ any ,
137+ any ,
138+ any
139+ >
140+ ? Id <
141+ Pick <
142+ Required < Definition > ,
143+ 'fulfilled' | 'rejected' | 'pending' | 'settled'
143144 >
144- : never
145- }
145+ >
146+ : never
146147}
147148
148149export const asyncThunkCreator : ReducerCreator < ReducerType . asyncThunk > = {
149150 type : ReducerType . asyncThunk ,
150151 create : /* @__PURE__ */ ( ( ) => {
151152 function asyncThunk (
152153 payloadCreator : AsyncThunkPayloadCreator < any , any > ,
153- config : AsyncThunkSliceReducerConfig < any , any > ,
154+ config : AsyncThunkSliceReducerConfig < any , any , any > ,
154155 ) : AsyncThunkSliceReducerDefinition < any , any > {
155156 return {
156157 _reducerDefinitionType : ReducerType . asyncThunk ,
0 commit comments