Skip to content

Commit c343457

Browse files
authored
fix: Add TQueryKey to QueryFunction generic type in QueryOptions, remove ensureArray from Query (TanStack#2074)
* Add TQueryKey to QueryFunction generic type in QueryOptions * Fix typing in souurce * Fix inner typings, add test * Avoid "as unknown" hack * Remove ensureArray
1 parent de28254 commit c343457

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

src/core/query.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import {
22
Updater,
3-
ensureArray,
43
functionalUpdate,
54
isValidTimeout,
65
noop,
@@ -378,9 +377,8 @@ export class Query<
378377
}
379378

380379
// Create query function context
381-
const queryKey = ensureArray(this.queryKey)
382-
const queryFnContext: QueryFunctionContext<unknown[]> = {
383-
queryKey,
380+
const queryFnContext: QueryFunctionContext<TQueryKey> = {
381+
queryKey: this.queryKey,
384382
pageParam: undefined,
385383
}
386384

@@ -394,7 +392,7 @@ export class Query<
394392
const context: FetchContext<TQueryFnData, TError, TData, any> = {
395393
fetchOptions,
396394
options: this.options,
397-
queryKey,
395+
queryKey: this.queryKey,
398396
state: this.state,
399397
fetchFn,
400398
}

src/core/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export interface QueryOptions<
5959
retryDelay?: RetryDelayValue<TError>
6060
cacheTime?: number
6161
isDataEqual?: (oldData: TData | undefined, newData: TData) => boolean
62-
queryFn?: QueryFunction<TQueryFnData>
62+
queryFn?: QueryFunction<TQueryFnData, TQueryKey>
6363
queryHash?: string
6464
queryKey?: TQueryKey
6565
queryKeyHashFn?: QueryKeyHashFunction<TQueryKey>

src/react/tests/useQuery.test.tsx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import {
1616
QueryClient,
1717
UseQueryResult,
1818
QueryCache,
19+
QueryFunction,
1920
QueryFunctionContext,
2021
} from '../..'
2122

@@ -74,6 +75,20 @@ describe('useQuery', () => {
7475
})
7576
expectType<string | undefined>(fromGenericOptionsQueryFn.data)
7677
expectType<unknown>(fromGenericOptionsQueryFn.error)
78+
79+
type MyData = number
80+
type MyQueryKey = readonly ['my-data', number]
81+
82+
const getMyData: QueryFunction<MyData, MyQueryKey> = async ({
83+
queryKey: [, n],
84+
}) => {
85+
return n + 42
86+
}
87+
88+
useQuery({
89+
queryKey: ['my-data', 100],
90+
queryFn: getMyData,
91+
})
7792
}
7893
})
7994

0 commit comments

Comments
 (0)