Skip to content

Commit e4e042d

Browse files
committed
Merge branch 'entity-methods-creator' into per-slice-creator
2 parents fc7d5ed + 541e5ca commit e4e042d

File tree

5 files changed

+221
-276
lines changed

5 files changed

+221
-276
lines changed

packages/toolkit/src/asyncThunkCreator.ts

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,14 @@ import type {
77
} from './createAsyncThunk'
88
import { createAsyncThunk } from './createAsyncThunk'
99
import type { CaseReducer } from './createReducer'
10-
import type {
11-
CreatorCaseReducers,
12-
ReducerCreator,
13-
ReducerDefinition,
14-
} from './createSlice'
10+
import type { ReducerCreator, ReducerDefinition } from './createSlice'
1511
import { ReducerType } from './createSlice'
1612
import 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

117121
export 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

148149
export 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

Comments
 (0)