Skip to content

Commit 9319061

Browse files
committed
Pass through correct data types for infinite queries
1 parent 7248c38 commit 9319061

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

packages/toolkit/src/query/core/apiState.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ export type GetPreviousPageParamFunction<TPageParam, TQueryFnData = unknown> = (
4242
allPageParams: Array<TPageParam>,
4343
) => TPageParam | undefined | null
4444

45-
export type InfiniteQueryConfigOptions<TQueryFnData = unknown, TPageParam = unknown> = {
45+
export type InfiniteQueryConfigOptions<
46+
TQueryFnData = unknown,
47+
TPageParam = unknown,
48+
> = {
4649
/**
4750
* This function can be set to automatically get the previous cursor for infinite queries.
4851
* The result will also be used to determine the value of `hasPreviousPage`.
@@ -161,7 +164,10 @@ export type MutationKeys<Definitions extends EndpointDefinitions> = {
161164
: never
162165
}[keyof Definitions]
163166

164-
type BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {
167+
type BaseQuerySubState<
168+
D extends BaseEndpointDefinition<any, any, any>,
169+
DataType = ResultTypeFrom<D>,
170+
> = {
165171
/**
166172
* The argument originally passed into the hook or `initiate` action call
167173
*/
@@ -173,7 +179,7 @@ type BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {
173179
/**
174180
* The received data from the query
175181
*/
176-
data?: ResultTypeFrom<D>
182+
data?: DataType
177183
/**
178184
* The received error if applicable
179185
*/
@@ -203,19 +209,22 @@ type BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {
203209
param?: QueryArgFrom<D>
204210
}
205211

206-
export type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<
212+
export type QuerySubState<
213+
D extends BaseEndpointDefinition<any, any, any>,
214+
DataType = ResultTypeFrom<D>,
215+
> = Id<
207216
| ({
208217
status: QueryStatus.fulfilled
209218
} & WithRequiredProp<
210-
BaseQuerySubState<D>,
219+
BaseQuerySubState<D, DataType>,
211220
'data' | 'fulfilledTimeStamp'
212221
> & { error: undefined })
213222
| ({
214223
status: QueryStatus.pending
215-
} & BaseQuerySubState<D>)
224+
} & BaseQuerySubState<D, DataType>)
216225
| ({
217226
status: QueryStatus.rejected
218-
} & WithRequiredProp<BaseQuerySubState<D>, 'error'>)
227+
} & WithRequiredProp<BaseQuerySubState<D, DataType>, 'error'>)
219228
| {
220229
status: QueryStatus.uninitialized
221230
originalArgs?: undefined
@@ -228,7 +237,9 @@ export type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<
228237
}
229238
>
230239

231-
export type InfiniteQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = QuerySubState<D> & {
240+
export type InfiniteQuerySubState<
241+
D extends BaseEndpointDefinition<any, any, any>,
242+
> = QuerySubState<D, InfiniteData<ResultTypeFrom<D>>> & {
232243
// TODO: These shouldn't be optional
233244
hasNextPage?: boolean
234245
hasPreviousPage?: boolean
@@ -294,7 +305,10 @@ export type InvalidationState<TagTypes extends string> = {
294305
}
295306

296307
export type QueryState<D extends EndpointDefinitions> = {
297-
[queryCacheKey: string]: QuerySubState<D[string]> | InfiniteQuerySubState<D[string]> | undefined
308+
[queryCacheKey: string]:
309+
| QuerySubState<D[string]>
310+
| InfiniteQuerySubState<D[string]>
311+
| undefined
298312
}
299313

300314
export type SubscriptionState = {

packages/toolkit/src/query/core/buildInitiate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ type StartInfiniteQueryActionCreator<
9595
) => (
9696
dispatch: ThunkDispatch<any, any, UnknownAction>,
9797
getState: () => any,
98-
) => InfiniteQueryActionCreatorResult<any>
98+
) => InfiniteQueryActionCreatorResult<D>
9999

100100
export type QueryActionCreatorResult<
101101
D extends QueryDefinition<any, any, any, any>,

0 commit comments

Comments
 (0)