@@ -22,17 +22,24 @@ export type QueryKey = readonly unknown[]
2222export type QueryFunction <
2323 T = unknown ,
2424 TQueryKey extends QueryKey = QueryKey ,
25- > = ( context : QueryFunctionContext < TQueryKey > ) => T | Promise < T >
25+ TPageParam = never ,
26+ > = ( context : QueryFunctionContext < TQueryKey , TPageParam > ) => T | Promise < T >
2627
27- export interface QueryFunctionContext <
28+ export type QueryFunctionContext <
2829 TQueryKey extends QueryKey = QueryKey ,
29- TPageParam = any ,
30- > {
31- queryKey : TQueryKey
32- signal : AbortSignal
33- pageParam ?: TPageParam
34- meta : QueryMeta | undefined
35- }
30+ TPageParam = never ,
31+ > = [ TPageParam ] extends [ never ]
32+ ? {
33+ queryKey : TQueryKey
34+ signal : AbortSignal
35+ meta : QueryMeta | undefined
36+ }
37+ : {
38+ queryKey : TQueryKey
39+ signal : AbortSignal
40+ pageParam : TPageParam
41+ meta : QueryMeta | undefined
42+ }
3643
3744export type InitialDataFunction < T > = ( ) => T | undefined
3845
@@ -50,15 +57,15 @@ export type QueryKeyHashFunction<TQueryKey extends QueryKey> = (
5057 queryKey : TQueryKey ,
5158) => string
5259
53- export type GetPreviousPageParamFunction < TQueryFnData = unknown > = (
60+ export type GetPreviousPageParamFunction < TPageParam , TQueryFnData = unknown > = (
5461 firstPage : TQueryFnData ,
5562 allPages : TQueryFnData [ ] ,
56- ) => unknown
63+ ) => TPageParam | undefined
5764
58- export type GetNextPageParamFunction < TQueryFnData = unknown > = (
65+ export type GetNextPageParamFunction < TPageParam , TQueryFnData = unknown > = (
5966 lastPage : TQueryFnData ,
6067 allPages : TQueryFnData [ ] ,
61- ) => unknown
68+ ) => TPageParam | undefined
6269
6370export interface InfiniteData < TData > {
6471 pages : TData [ ]
@@ -76,6 +83,7 @@ export interface QueryOptions<
7683 TError = RegisteredError ,
7784 TData = TQueryFnData ,
7885 TQueryKey extends QueryKey = QueryKey ,
86+ TPageParam = never ,
7987> {
8088 /**
8189 * If `false`, failed queries will not retry by default.
@@ -87,7 +95,7 @@ export interface QueryOptions<
8795 retryDelay ?: RetryDelayValue < TError >
8896 networkMode ?: NetworkMode
8997 gcTime ?: number
90- queryFn ?: QueryFunction < TQueryFnData , TQueryKey >
98+ queryFn ?: QueryFunction < TQueryFnData , TQueryKey , TPageParam >
9199 queryHash ?: string
92100 queryKey ?: TQueryKey
93101 queryKeyHashFn ?: QueryKeyHashFunction < TQueryKey >
@@ -114,22 +122,24 @@ export interface QueryOptions<
114122 maxPages ?: number
115123}
116124
117- export interface DefaultPageParam {
118- defaultPageParam : unknown
125+ export interface DefaultPageParam < TPageParam = unknown > {
126+ defaultPageParam : TPageParam
119127}
120128
121- export interface InfiniteQueryOptions < TQueryFnData = unknown >
122- extends DefaultPageParam {
129+ export interface InfiniteQueryOptions <
130+ TQueryFnData = unknown ,
131+ TPageParam = unknown ,
132+ > extends DefaultPageParam < TPageParam > {
123133 /**
124134 * This function can be set to automatically get the previous cursor for infinite queries.
125135 * The result will also be used to determine the value of `hasPreviousPage`.
126136 */
127- getPreviousPageParam ?: GetPreviousPageParamFunction < TQueryFnData >
137+ getPreviousPageParam ?: GetPreviousPageParamFunction < TPageParam , TQueryFnData >
128138 /**
129139 * This function can be set to automatically get the next cursor for infinite queries.
130140 * The result will also be used to determine the value of `hasNextPage`.
131141 */
132- getNextPageParam : GetNextPageParamFunction < TQueryFnData >
142+ getNextPageParam : GetNextPageParamFunction < TPageParam , TQueryFnData >
133143}
134144
135145export type ThrowErrors <
@@ -150,7 +160,14 @@ export interface QueryObserverOptions<
150160 TData = TQueryFnData ,
151161 TQueryData = TQueryFnData ,
152162 TQueryKey extends QueryKey = QueryKey ,
153- > extends QueryOptions < TQueryFnData , TError , TQueryData , TQueryKey > {
163+ TPageParam = never ,
164+ > extends QueryOptions <
165+ TQueryFnData ,
166+ TError ,
167+ TQueryData ,
168+ TQueryKey ,
169+ TPageParam
170+ > {
154171 /**
155172 * Set this to `false` to disable automatic refetching when the query mounts or changes query keys.
156173 * To refetch the query, use the `refetch` method returned from the `useQuery` instance.
@@ -289,14 +306,16 @@ export interface InfiniteQueryObserverOptions<
289306 TData = TQueryFnData ,
290307 TQueryData = TQueryFnData ,
291308 TQueryKey extends QueryKey = QueryKey ,
309+ TPageParam = unknown ,
292310> extends QueryObserverOptions <
293311 TQueryFnData ,
294312 TError ,
295313 InfiniteData < TData > ,
296314 InfiniteData < TQueryData > ,
297- TQueryKey
315+ TQueryKey ,
316+ TPageParam
298317 > ,
299- InfiniteQueryOptions < TQueryFnData > { }
318+ InfiniteQueryOptions < TQueryFnData , TPageParam > { }
300319
301320export type DefaultedInfiniteQueryObserverOptions <
302321 TQueryFnData = unknown ,
@@ -320,8 +339,9 @@ export interface FetchQueryOptions<
320339 TError = RegisteredError ,
321340 TData = TQueryFnData ,
322341 TQueryKey extends QueryKey = QueryKey ,
342+ TPageParam = never ,
323343> extends WithRequired <
324- QueryOptions < TQueryFnData , TError , TData , TQueryKey > ,
344+ QueryOptions < TQueryFnData , TError , TData , TQueryKey , TPageParam > ,
325345 'queryKey'
326346 > {
327347 /**
@@ -336,13 +356,15 @@ export interface FetchInfiniteQueryOptions<
336356 TError = RegisteredError ,
337357 TData = TQueryFnData ,
338358 TQueryKey extends QueryKey = QueryKey ,
359+ TPageParam = unknown ,
339360> extends FetchQueryOptions <
340361 TQueryFnData ,
341362 TError ,
342363 InfiniteData < TData > ,
343- TQueryKey
364+ TQueryKey ,
365+ TPageParam
344366 > ,
345- DefaultPageParam { }
367+ DefaultPageParam < TPageParam > { }
346368
347369export interface ResultOptions {
348370 throwOnError ?: boolean
0 commit comments