Skip to content

Commit 15de9ce

Browse files
fix(types): adds queryKey generic to queryClient functions
1 parent e81cb47 commit 15de9ce

File tree

2 files changed

+81
-57
lines changed

2 files changed

+81
-57
lines changed

src/core/queryClient.ts

Lines changed: 75 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -252,24 +252,24 @@ export class QueryClient {
252252
return promise
253253
}
254254

255-
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
256-
options: FetchQueryOptions<TQueryFnData, TError, TData>
255+
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
256+
options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
257257
): Promise<TData>
258-
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
259-
queryKey: QueryKey,
260-
options?: FetchQueryOptions<TQueryFnData, TError, TData>
258+
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
259+
queryKey: TQueryKey,
260+
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
261261
): Promise<TData>
262-
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
263-
queryKey: QueryKey,
264-
queryFn: QueryFunction<TQueryFnData>,
265-
options?: FetchQueryOptions<TQueryFnData, TError, TData>
262+
fetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
263+
queryKey: TQueryKey,
264+
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
265+
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
266266
): Promise<TData>
267-
fetchQuery<TQueryFnData, TError, TData = TQueryFnData>(
268-
arg1: QueryKey | FetchQueryOptions<TQueryFnData, TError, TData>,
267+
fetchQuery<TQueryFnData, TError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
268+
arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
269269
arg2?:
270-
| QueryFunction<TQueryFnData>
271-
| FetchQueryOptions<TQueryFnData, TError, TData>,
272-
arg3?: FetchQueryOptions<TQueryFnData, TError, TData>
270+
| QueryFunction<TQueryFnData, TQueryKey>
271+
| FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
272+
arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
273273
): Promise<TData> {
274274
const parsedOptions = parseQueryArgs(arg1, arg2, arg3)
275275
const defaultedOptions = this.defaultQueryOptions(parsedOptions)
@@ -286,22 +286,22 @@ export class QueryClient {
286286
: Promise.resolve(query.state.data as TData)
287287
}
288288

289-
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
290-
options: FetchQueryOptions<TQueryFnData, TError, TData>
289+
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
290+
options: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
291291
): Promise<void>
292-
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
293-
queryKey: QueryKey,
294-
options?: FetchQueryOptions<TQueryFnData, TError, TData>
292+
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
293+
queryKey: TQueryKey,
294+
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
295295
): Promise<void>
296-
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
297-
queryKey: QueryKey,
298-
queryFn: QueryFunction,
299-
options?: FetchQueryOptions<TQueryFnData, TError, TData>
296+
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
297+
queryKey: TQueryKey,
298+
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
299+
options?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
300300
): Promise<void>
301-
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData>(
302-
arg1: QueryKey | FetchQueryOptions<TQueryFnData, TError, TData>,
303-
arg2?: QueryFunction | FetchQueryOptions<TQueryFnData, TError, TData>,
304-
arg3?: FetchQueryOptions<TQueryFnData, TError, TData>
301+
prefetchQuery<TQueryFnData = unknown, TError = unknown, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
302+
arg1: TQueryKey | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
303+
arg2?: QueryFunction<TQueryFnData, TQueryKey> | FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
304+
arg3?: FetchQueryOptions<TQueryFnData, TError, TData, TQueryKey>
305305
): Promise<void> {
306306
return this.fetchQuery(arg1 as any, arg2 as any, arg3)
307307
.then(noop)
@@ -311,33 +311,36 @@ export class QueryClient {
311311
fetchInfiniteQuery<
312312
TQueryFnData = unknown,
313313
TError = unknown,
314-
TData = TQueryFnData
314+
TData = TQueryFnData,
315+
TQueryKey extends QueryKey = QueryKey
315316
>(
316-
options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData>
317+
options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
317318
): Promise<InfiniteData<TData>>
318319
fetchInfiniteQuery<
319320
TQueryFnData = unknown,
320321
TError = unknown,
321-
TData = TQueryFnData
322+
TData = TQueryFnData,
323+
TQueryKey extends QueryKey = QueryKey
322324
>(
323-
queryKey: QueryKey,
324-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData>
325+
queryKey: TQueryKey,
326+
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
325327
): Promise<InfiniteData<TData>>
326328
fetchInfiniteQuery<
327329
TQueryFnData = unknown,
328330
TError = unknown,
329-
TData = TQueryFnData
331+
TData = TQueryFnData,
332+
TQueryKey extends QueryKey = QueryKey
330333
>(
331-
queryKey: QueryKey,
332-
queryFn: QueryFunction<TQueryFnData>,
333-
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData>
334+
queryKey: TQueryKey,
335+
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
336+
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
334337
): Promise<InfiniteData<TData>>
335-
fetchInfiniteQuery<TQueryFnData, TError, TData = TQueryFnData>(
336-
arg1: QueryKey | FetchInfiniteQueryOptions<TQueryFnData, TError, TData>,
338+
fetchInfiniteQuery<TQueryFnData, TError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
339+
arg1: TQueryKey | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
337340
arg2?:
338-
| QueryFunction<TQueryFnData>
339-
| FetchInfiniteQueryOptions<TQueryFnData, TError, TData>,
340-
arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData>
341+
| QueryFunction<TQueryFnData, TQueryKey>
342+
| FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
343+
arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
341344
): Promise<InfiniteData<TData>> {
342345
const parsedOptions = parseQueryArgs(arg1, arg2, arg3)
343346
parsedOptions.behavior = infiniteQueryBehavior<
@@ -348,20 +351,39 @@ export class QueryClient {
348351
return this.fetchQuery(parsedOptions)
349352
}
350353

351-
prefetchInfiniteQuery(options: FetchInfiniteQueryOptions): Promise<void>
352-
prefetchInfiniteQuery(
353-
queryKey: QueryKey,
354-
options?: FetchInfiniteQueryOptions
354+
prefetchInfiniteQuery<
355+
TQueryFnData = unknown,
356+
TError = unknown,
357+
TData = TQueryFnData,
358+
TQueryKey extends QueryKey = QueryKey
359+
>(
360+
options: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
355361
): Promise<void>
356-
prefetchInfiniteQuery(
357-
queryKey: QueryKey,
358-
queryFn: QueryFunction,
359-
options?: FetchInfiniteQueryOptions
362+
prefetchInfiniteQuery<
363+
TQueryFnData = unknown,
364+
TError = unknown,
365+
TData = TQueryFnData,
366+
TQueryKey extends QueryKey = QueryKey
367+
>(
368+
queryKey: TQueryKey,
369+
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
360370
): Promise<void>
361-
prefetchInfiniteQuery(
362-
arg1: QueryKey | FetchInfiniteQueryOptions,
363-
arg2?: QueryFunction | FetchInfiniteQueryOptions,
364-
arg3?: FetchInfiniteQueryOptions
371+
prefetchInfiniteQuery<
372+
TQueryFnData = unknown,
373+
TError = unknown,
374+
TData = TQueryFnData,
375+
TQueryKey extends QueryKey = QueryKey
376+
>(
377+
queryKey: TQueryKey,
378+
queryFn: QueryFunction<TQueryFnData, TQueryKey>,
379+
options?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
380+
): Promise<void>
381+
prefetchInfiniteQuery<TQueryFnData, TError, TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey>(
382+
arg1: TQueryKey | FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
383+
arg2?:
384+
| QueryFunction<TQueryFnData, TQueryKey>
385+
| FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>,
386+
arg3?: FetchInfiniteQueryOptions<TQueryFnData, TError, TData, TQueryKey>
365387
): Promise<void> {
366388
return this.fetchInfiniteQuery(arg1 as any, arg2 as any, arg3)
367389
.then(noop)

src/core/types.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -210,8 +210,9 @@ export interface InfiniteQueryObserverOptions<
210210
export interface FetchQueryOptions<
211211
TQueryFnData = unknown,
212212
TError = unknown,
213-
TData = TQueryFnData
214-
> extends QueryOptions<TQueryFnData, TError, TData> {
213+
TData = TQueryFnData,
214+
TQueryKey extends QueryKey = QueryKey
215+
> extends QueryOptions<TQueryFnData, TError, TData, TQueryKey> {
215216
/**
216217
* The time in milliseconds after data is considered stale.
217218
* If the data is fresh it will be returned from the cache.
@@ -222,8 +223,9 @@ export interface FetchQueryOptions<
222223
export interface FetchInfiniteQueryOptions<
223224
TQueryFnData = unknown,
224225
TError = unknown,
225-
TData = TQueryFnData
226-
> extends FetchQueryOptions<TQueryFnData, TError, InfiniteData<TData>> {}
226+
TData = TQueryFnData,
227+
TQueryKey extends QueryKey = QueryKey
228+
> extends FetchQueryOptions<TQueryFnData, TError, InfiniteData<TData>, TQueryKey> {}
227229

228230
export interface ResultOptions {
229231
throwOnError?: boolean

0 commit comments

Comments
 (0)