Skip to content

Commit 7364f87

Browse files
authored
expose createAsyncThunk typePrefix parameter on the actionCreator (#546)
1 parent 9a00f7b commit 7364f87

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

etc/redux-toolkit.api.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export function createAction<P = void, T extends string = string>(type: T): Payl
124124
export function createAction<PA extends PrepareAction<any>, T extends string = string>(type: T, prepareAction: PA): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>;
125125

126126
// @public (undocumented)
127-
export function createAsyncThunk<Returned, ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}>(type: string, payloadCreator: (arg: ThunkArg, thunkAPI: GetThunkAPI<ThunkApiConfig>) => Promise<Returned | RejectWithValue<GetRejectValue<ThunkApiConfig>>> | Returned | RejectWithValue<GetRejectValue<ThunkApiConfig>>, options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>): IsAny<ThunkArg, (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>, unknown extends ThunkArg ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [ThunkArg] extends [void] | [undefined] ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [void] extends [ThunkArg] ? (arg?: ThunkArg | undefined) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [undefined] extends [ThunkArg] ? (arg?: ThunkArg | undefined) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>> & {
127+
export function createAsyncThunk<Returned, ThunkArg = void, ThunkApiConfig extends AsyncThunkConfig = {}>(typePrefix: string, payloadCreator: (arg: ThunkArg, thunkAPI: GetThunkAPI<ThunkApiConfig>) => Promise<Returned | RejectWithValue<GetRejectValue<ThunkApiConfig>>> | Returned | RejectWithValue<GetRejectValue<ThunkApiConfig>>, options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>): IsAny<ThunkArg, (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>, unknown extends ThunkArg ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [ThunkArg] extends [void] | [undefined] ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [void] extends [ThunkArg] ? (arg?: ThunkArg | undefined) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : [undefined] extends [ThunkArg] ? (arg?: ThunkArg | undefined) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>> & {
128128
pending: ActionCreatorWithPreparedPayload<[string, ThunkArg], undefined, string, never, {
129129
arg: ThunkArg;
130130
requestId: string;
@@ -139,6 +139,7 @@ export function createAsyncThunk<Returned, ThunkArg = void, ThunkApiConfig exten
139139
arg: ThunkArg;
140140
requestId: string;
141141
}>;
142+
typePrefix: string;
142143
};
143144

144145
// @public (undocumented)

src/createAsyncThunk.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,12 @@ describe('createAsyncThunk', () => {
2727
expect(thunkActionCreator.rejected.type).toBe('testType/rejected')
2828
})
2929

30+
it('exposes the typePrefix it was created with', () => {
31+
const thunkActionCreator = createAsyncThunk('testType', async () => 42)
32+
33+
expect(thunkActionCreator.typePrefix).toBe('testType')
34+
})
35+
3036
it('works without passing arguments to the payload creator', async () => {
3137
const thunkActionCreator = createAsyncThunk('testType', async () => 42)
3238

src/createAsyncThunk.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ interface AsyncThunkOptions<
217217

218218
/**
219219
*
220-
* @param type
220+
* @param typePrefix
221221
* @param payloadCreator
222222
* @param options
223223
*
@@ -228,7 +228,7 @@ export function createAsyncThunk<
228228
ThunkArg = void,
229229
ThunkApiConfig extends AsyncThunkConfig = {}
230230
>(
231-
type: string,
231+
typePrefix: string,
232232
payloadCreator: (
233233
arg: ThunkArg,
234234
thunkAPI: GetThunkAPI<ThunkApiConfig>
@@ -241,7 +241,7 @@ export function createAsyncThunk<
241241
type RejectedValue = GetRejectValue<ThunkApiConfig>
242242

243243
const fulfilled = createAction(
244-
type + '/fulfilled',
244+
typePrefix + '/fulfilled',
245245
(result: Returned, requestId: string, arg: ThunkArg) => {
246246
return {
247247
payload: result,
@@ -251,7 +251,7 @@ export function createAsyncThunk<
251251
)
252252

253253
const pending = createAction(
254-
type + '/pending',
254+
typePrefix + '/pending',
255255
(requestId: string, arg: ThunkArg) => {
256256
return {
257257
payload: undefined,
@@ -261,7 +261,7 @@ export function createAsyncThunk<
261261
)
262262

263263
const rejected = createAction(
264-
type + '/rejected',
264+
typePrefix + '/rejected',
265265
(
266266
error: Error | null,
267267
requestId: string,
@@ -397,7 +397,8 @@ If you want to use the AbortController to react to \`abort\` events, please cons
397397
{
398398
pending,
399399
rejected,
400-
fulfilled
400+
fulfilled,
401+
typePrefix
401402
}
402403
)
403404
}

0 commit comments

Comments
 (0)