diff --git a/packages/react-query/src/__tests__/useQuery.test-d.tsx b/packages/react-query/src/__tests__/useQuery.test-d.tsx index 5aa37fc376..b59e7f295d 100644 --- a/packages/react-query/src/__tests__/useQuery.test-d.tsx +++ b/packages/react-query/src/__tests__/useQuery.test-d.tsx @@ -277,6 +277,22 @@ describe('useQuery', () => { } }) + // eslint-disable-next-line vitest/expect-expect + it('TData should depend from only arguments, not the result', () => { + // @ts-expect-error + const result: UseQueryResult<{ wow: string }> = useQuery({ + queryKey: ['key'], + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }) + + void result + }) + it('data should not have undefined when initialData is provided', () => { const { data } = useQuery({ queryKey: ['query-key'], diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 962ef4da66..52d479551d 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -1,7 +1,12 @@ 'use client' import { QueryObserver } from '@tanstack/query-core' import { useBaseQuery } from './useBaseQuery' -import type { DefaultError, QueryClient, QueryKey } from '@tanstack/query-core' +import type { + DefaultError, + NoInfer, + QueryClient, + QueryKey, +} from '@tanstack/query-core' import type { DefinedUseQueryResult, UseQueryOptions, @@ -20,7 +25,7 @@ export function useQuery< >( options: DefinedInitialDataOptions, queryClient?: QueryClient, -): DefinedUseQueryResult +): DefinedUseQueryResult, TError> export function useQuery< TQueryFnData = unknown, @@ -30,7 +35,7 @@ export function useQuery< >( options: UndefinedInitialDataOptions, queryClient?: QueryClient, -): UseQueryResult +): UseQueryResult, TError> export function useQuery< TQueryFnData = unknown, @@ -40,7 +45,7 @@ export function useQuery< >( options: UseQueryOptions, queryClient?: QueryClient, -): UseQueryResult +): UseQueryResult, TError> export function useQuery(options: UseQueryOptions, queryClient?: QueryClient) { return useBaseQuery(options, QueryObserver, queryClient)