From e1477b382edf42869fc98add1408961027df668c Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 10:01:46 +0100 Subject: [PATCH 1/8] Added a proof of concept for initialData --- package-lock.json | 4 +++- .../src/__tests__/useQuery.types.test.tsx | 17 +++++++++++++++++ packages/react-query/src/useQuery.ts | 19 ++++++++++++++++++- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 packages/react-query/src/__tests__/useQuery.types.test.tsx diff --git a/package-lock.json b/package-lock.json index 34b055f6a1..bd46664f0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44932,7 +44932,9 @@ "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-native": "*" }, "peerDependenciesMeta": { "react-dom": { diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx new file mode 100644 index 0000000000..7eba5cd5f3 --- /dev/null +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -0,0 +1,17 @@ +import { useQuery } from '../useQuery' + +describe('useQuery', () => { + it('TData should always be defined when initialData is provided', () => { + const { data } = useQuery({ + // ^? + queryFn: () => { + return { + wow: true, + } + }, + initialData: { + wow: true, + }, + }) + }) +}) diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 10fdfebc6c..55901b3c80 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -3,6 +3,7 @@ import { QueryFunction, QueryKey, parseQueryArgs, + InitialDataFunction, } from '@tanstack/query-core' import { UseQueryOptions, UseQueryResult } from './types' import { useBaseQuery } from './useBaseQuery' @@ -15,8 +16,24 @@ export function useQuery< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, >( - options: UseQueryOptions, + options: Omit< + UseQueryOptions, + 'initialData' + > & { initialData?: never }, ): UseQueryResult + +export function useQuery< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + options: Omit< + UseQueryOptions, + 'initialData' + > & { initialData: TData | InitialDataFunction }, +): Omit, 'data'> & { data: TData } + export function useQuery< TQueryFnData = unknown, TError = unknown, From 1cfc8386ed16f5327114ee6c33d48de7a9c9ce5c Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 10:04:27 +0100 Subject: [PATCH 2/8] Fleshed out test --- .../src/__tests__/useQuery.types.test.tsx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx index 7eba5cd5f3..f41dae0d7b 100644 --- a/packages/react-query/src/__tests__/useQuery.types.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -1,5 +1,7 @@ import { useQuery } from '../useQuery' +const assert = (type: T) => void 0 + describe('useQuery', () => { it('TData should always be defined when initialData is provided', () => { const { data } = useQuery({ @@ -13,5 +15,20 @@ describe('useQuery', () => { wow: true, }, }) + + assert<{ wow: boolean }>(data) + }) + + it('TData should have undefined in the union when initialData is NOT provided', () => { + const { data } = useQuery({ + // ^? + queryFn: () => { + return { + wow: true, + } + }, + }) + + assert<{ wow: boolean } | undefined>(data) }) }) From 64f5e4ce881adf734260413097a26c637b1dff9c Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 10:22:41 +0100 Subject: [PATCH 3/8] Completed overload change --- .../src/__tests__/useQuery.types.test.tsx | 117 ++++++++++++++---- packages/react-query/src/useQuery.ts | 37 +++++- 2 files changed, 128 insertions(+), 26 deletions(-) diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx index f41dae0d7b..33de5d008a 100644 --- a/packages/react-query/src/__tests__/useQuery.types.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -1,34 +1,107 @@ import { useQuery } from '../useQuery' -const assert = (type: T) => void 0 +const assert = (_type: T) => void 0 + +const doNotExecute = (_func: () => void) => {} describe('useQuery', () => { - it('TData should always be defined when initialData is provided', () => { - const { data } = useQuery({ - // ^? - queryFn: () => { - return { - wow: true, - } - }, - initialData: { - wow: true, - }, + describe('Config object overload', () => { + it('TData should always be defined when initialData is provided', () => { + doNotExecute(() => { + const { data } = useQuery({ + queryFn: () => { + return { + wow: true, + } + }, + initialData: { + wow: true, + }, + }) + + assert<{ wow: boolean }>(data) + }) + }) + + it('TData should have undefined in the union when initialData is NOT provided', () => { + doNotExecute(() => { + const { data } = useQuery({ + queryFn: () => { + return { + wow: true, + } + }, + }) + + assert<{ wow: boolean } | undefined>(data) + }) + }) + }) + + describe('Query key overload', () => { + it('TData should always be defined when initialData is provided', () => { + doNotExecute(() => { + const { data } = useQuery(['key'], { + queryFn: () => { + return { + wow: true, + } + }, + initialData: { + wow: true, + }, + }) + + assert<{ wow: boolean }>(data) + }) }) - assert<{ wow: boolean }>(data) + it('TData should have undefined in the union when initialData is NOT provided', () => { + doNotExecute(() => { + const { data } = useQuery(['key'], { + queryFn: () => { + return { + wow: true, + } + }, + }) + + assert<{ wow: boolean } | undefined>(data) + }) + }) }) - it('TData should have undefined in the union when initialData is NOT provided', () => { - const { data } = useQuery({ - // ^? - queryFn: () => { - return { - wow: true, - } - }, + describe('Query key and func', () => { + it('TData should always be defined when initialData is provided', () => { + doNotExecute(() => { + const { data } = useQuery( + ['key'], + () => { + return { + wow: true, + } + }, + { + initialData: { + wow: true, + }, + }, + ) + + assert<{ wow: boolean }>(data) + }) }) - assert<{ wow: boolean } | undefined>(data) + it('TData should have undefined in the union when initialData is NOT provided', () => { + doNotExecute(() => { + const { data } = useQuery(['key'], () => { + return { + wow: true, + } + }) + + assert<{ wow: boolean } | undefined>(data) + }) + }) }) }) diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 55901b3c80..e0d140558c 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -43,9 +43,23 @@ export function useQuery< queryKey: TQueryKey, options?: Omit< UseQueryOptions, - 'queryKey' - >, + 'queryKey' | 'initialData' + > & { initialData?: never }, ): UseQueryResult + +export function useQuery< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + queryKey: TQueryKey, + options?: Omit< + UseQueryOptions, + 'queryKey' | 'initialData' + > & { initialData: TData | InitialDataFunction }, +): Omit, 'data'> & { data: TData } + export function useQuery< TQueryFnData = unknown, TError = unknown, @@ -56,9 +70,24 @@ export function useQuery< queryFn: QueryFunction, options?: Omit< UseQueryOptions, - 'queryKey' | 'queryFn' - >, + 'queryKey' | 'queryFn' | 'initialData' + > & { initialData?: never }, ): UseQueryResult + +export function useQuery< + TQueryFnData = unknown, + TError = unknown, + TData = TQueryFnData, + TQueryKey extends QueryKey = QueryKey, +>( + queryKey: TQueryKey, + queryFn: QueryFunction, + options?: Omit< + UseQueryOptions, + 'queryKey' | 'queryFn' | 'initialData' + > & { initialData?: TData | InitialDataFunction }, +): Omit, 'data'> & { data: TData } + export function useQuery< TQueryFnData, TError, From af9480ce20c8305ca0a269679b84fca6696ad25e Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 10:38:33 +0100 Subject: [PATCH 4/8] More progress --- .../src/__tests__/useQuery.types.test.tsx | 54 ++++++++++++++++--- packages/react-query/src/useQuery.ts | 17 +++--- 2 files changed, 54 insertions(+), 17 deletions(-) diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx index 33de5d008a..89eaa7facd 100644 --- a/packages/react-query/src/__tests__/useQuery.types.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -1,12 +1,18 @@ import { useQuery } from '../useQuery' -const assert = (_type: T) => void 0 +export type Equal = (() => T extends X ? 1 : 2) extends < + T, +>() => T extends Y ? 1 : 2 + ? true + : false + +export type Expect = T const doNotExecute = (_func: () => void) => {} describe('useQuery', () => { describe('Config object overload', () => { - it('TData should always be defined when initialData is provided', () => { + it('TData should always be defined when initialData is provided as an object', () => { doNotExecute(() => { const { data } = useQuery({ queryFn: () => { @@ -19,7 +25,24 @@ describe('useQuery', () => { }, }) - assert<{ wow: boolean }>(data) + type cases = [Expect>] + }) + }) + + it('TData should always be defined when initialData is provided as a function which ALWAYS returns the data', () => { + doNotExecute(() => { + const { data } = useQuery({ + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => ({ + wow: true, + }), + }) + + type cases = [Expect>] }) }) @@ -33,7 +56,22 @@ describe('useQuery', () => { }, }) - assert<{ wow: boolean } | undefined>(data) + type cases = [Expect>] + }) + }) + + it('TData should have undefined in the union when initialData is provided as a function which can return undefined', () => { + doNotExecute(() => { + const { data } = useQuery({ + queryFn: () => { + return { + wow: true, + } + }, + initialData: () => undefined as { wow: boolean } | undefined, + }) + + type cases = [Expect>] }) }) }) @@ -52,7 +90,7 @@ describe('useQuery', () => { }, }) - assert<{ wow: boolean }>(data) + type cases = [Expect>] }) }) @@ -66,7 +104,7 @@ describe('useQuery', () => { }, }) - assert<{ wow: boolean } | undefined>(data) + type cases = [Expect>] }) }) }) @@ -88,7 +126,7 @@ describe('useQuery', () => { }, ) - assert<{ wow: boolean }>(data) + type cases = [Expect>] }) }) @@ -100,7 +138,7 @@ describe('useQuery', () => { } }) - assert<{ wow: boolean } | undefined>(data) + type cases = [Expect>] }) }) }) diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index e0d140558c..02504a9026 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -1,9 +1,8 @@ import { - QueryObserver, + parseQueryArgs, QueryFunction, QueryKey, - parseQueryArgs, - InitialDataFunction, + QueryObserver, } from '@tanstack/query-core' import { UseQueryOptions, UseQueryResult } from './types' import { useBaseQuery } from './useBaseQuery' @@ -19,7 +18,7 @@ export function useQuery< options: Omit< UseQueryOptions, 'initialData' - > & { initialData?: never }, + > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< @@ -31,7 +30,7 @@ export function useQuery< options: Omit< UseQueryOptions, 'initialData' - > & { initialData: TData | InitialDataFunction }, + > & { initialData: TData | (() => TData) }, ): Omit, 'data'> & { data: TData } export function useQuery< @@ -44,7 +43,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'initialData' - > & { initialData?: never }, + > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< @@ -57,7 +56,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'initialData' - > & { initialData: TData | InitialDataFunction }, + > & { initialData: TData | (() => TData) }, ): Omit, 'data'> & { data: TData } export function useQuery< @@ -71,7 +70,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' - > & { initialData?: never }, + > & { initialData?: () => undefined }, ): UseQueryResult export function useQuery< @@ -85,7 +84,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' - > & { initialData?: TData | InitialDataFunction }, + > & { initialData: TData | (() => TData) }, ): Omit, 'data'> & { data: TData } export function useQuery< From 727006b02018278440b84f1cec534473bf9cf78f Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 11:05:55 +0100 Subject: [PATCH 5/8] Testing if a local tsconfig.json quiets down the errors --- packages/react-query/src/__tests__/tsconfig.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 packages/react-query/src/__tests__/tsconfig.json diff --git a/packages/react-query/src/__tests__/tsconfig.json b/packages/react-query/src/__tests__/tsconfig.json new file mode 100644 index 0000000000..b0f25925f3 --- /dev/null +++ b/packages/react-query/src/__tests__/tsconfig.json @@ -0,0 +1,6 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "noUnusedLocals": false + } +} \ No newline at end of file From 18309c09480d77449ff65ce553426bcba4817c37 Mon Sep 17 00:00:00 2001 From: Matt Pocock Date: Sat, 16 Jul 2022 11:15:28 +0100 Subject: [PATCH 6/8] Fixed TS errors --- .../react-query/src/__tests__/tsconfig.json | 6 ---- .../src/__tests__/useQuery.types.test.tsx | 28 +++++++++++++------ 2 files changed, 20 insertions(+), 14 deletions(-) delete mode 100644 packages/react-query/src/__tests__/tsconfig.json diff --git a/packages/react-query/src/__tests__/tsconfig.json b/packages/react-query/src/__tests__/tsconfig.json deleted file mode 100644 index b0f25925f3..0000000000 --- a/packages/react-query/src/__tests__/tsconfig.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "../../tsconfig.json", - "compilerOptions": { - "noUnusedLocals": false - } -} \ No newline at end of file diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx index 89eaa7facd..2861e45f7d 100644 --- a/packages/react-query/src/__tests__/useQuery.types.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -25,7 +25,8 @@ describe('useQuery', () => { }, }) - type cases = [Expect>] + const result: Expect> = true + return result }) }) @@ -42,7 +43,8 @@ describe('useQuery', () => { }), }) - type cases = [Expect>] + const result: Expect> = true + return result }) }) @@ -56,7 +58,9 @@ describe('useQuery', () => { }, }) - type cases = [Expect>] + const result: Expect> = + true + return result }) }) @@ -71,7 +75,9 @@ describe('useQuery', () => { initialData: () => undefined as { wow: boolean } | undefined, }) - type cases = [Expect>] + const result: Expect> = + true + return result }) }) }) @@ -90,7 +96,8 @@ describe('useQuery', () => { }, }) - type cases = [Expect>] + const result: Expect> = true + return result }) }) @@ -104,7 +111,9 @@ describe('useQuery', () => { }, }) - type cases = [Expect>] + const result: Expect> = + true + return result }) }) }) @@ -126,7 +135,8 @@ describe('useQuery', () => { }, ) - type cases = [Expect>] + const result: Expect> = true + return result }) }) @@ -138,7 +148,9 @@ describe('useQuery', () => { } }) - type cases = [Expect>] + const result: Expect> = + true + return result }) }) }) From bd0ec66757adca0954f267f08c7ec5a36d092346 Mon Sep 17 00:00:00 2001 From: Dominik Dorfmeister Date: Sat, 16 Jul 2022 12:30:15 +0200 Subject: [PATCH 7/8] fix(types): extract DefinedQueryResult and use that in tests --- .../PersistQueryClientProvider.test.tsx | 3 ++- .../src/__tests__/useQuery.test.tsx | 25 ++++++++++--------- .../src/__tests__/useQuery.types.test.tsx | 4 +-- packages/react-query/src/types.ts | 5 ++++ packages/react-query/src/useQuery.ts | 8 +++--- 5 files changed, 26 insertions(+), 19 deletions(-) diff --git a/packages/react-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx b/packages/react-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx index 45321ce16a..6802f60bb7 100644 --- a/packages/react-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx +++ b/packages/react-query-persist-client/src/__tests__/PersistQueryClientProvider.test.tsx @@ -6,6 +6,7 @@ import { useQuery, UseQueryResult, useQueries, + DefinedUseQueryResult, } from '@tanstack/react-query' import { createQueryClient, @@ -200,7 +201,7 @@ describe('PersistQueryClientProvider', () => { test('should show initialData while restoring', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] const queryClient = createQueryClient() await queryClient.prefetchQuery(key, () => Promise.resolve('hydrated')) diff --git a/packages/react-query/src/__tests__/useQuery.test.tsx b/packages/react-query/src/__tests__/useQuery.test.tsx index 88c994eb39..37ab64707a 100644 --- a/packages/react-query/src/__tests__/useQuery.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.test.tsx @@ -19,6 +19,7 @@ import { QueryFunction, QueryFunctionContext, UseQueryOptions, + DefinedUseQueryResult, } from '..' import { ErrorBoundary } from 'react-error-boundary' @@ -142,7 +143,7 @@ describe('useQuery', () => { ) => Promise, options?: Omit< UseQueryOptions, - 'queryKey' | 'queryFn' + 'queryKey' | 'queryFn' | 'initialData' >, ) => useQuery(qk, () => fetcher(qk[1], 'token'), options) const test = useWrappedQuery([''], async () => '1') @@ -159,7 +160,7 @@ describe('useQuery', () => { fetcher: () => Promise, options?: Omit< UseQueryOptions, - 'queryKey' | 'queryFn' + 'queryKey' | 'queryFn' | 'initialData' >, ) => useQuery(qk, fetcher, options) const testFuncStyle = useWrappedFuncStyleQuery([''], async () => true) @@ -1295,7 +1296,7 @@ describe('useQuery', () => { it('should use query function from hook when the existing query does not have a query function', async () => { const key = queryKey() - const results: UseQueryResult[] = [] + const results: DefinedUseQueryResult[] = [] queryClient.setQueryData(key, 'set') @@ -1712,7 +1713,7 @@ describe('useQuery', () => { it('should not show initial data from next query if keepPreviousData is set', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] function Page() { const [count, setCount] = React.useState(0) @@ -3025,7 +3026,7 @@ describe('useQuery', () => { it('should fetch if initial data is set', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] function Page() { const state = useQuery(key, () => 'data', { @@ -3055,7 +3056,7 @@ describe('useQuery', () => { it('should not fetch if initial data is set with a stale time', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] function Page() { const state = useQuery(key, () => 'data', { @@ -3085,7 +3086,7 @@ describe('useQuery', () => { it('should fetch if initial data updated at is older than stale time', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] const oneSecondAgo = Date.now() - 1000 @@ -3123,7 +3124,7 @@ describe('useQuery', () => { it('should fetch if "initial data updated at" is exactly 0', async () => { const key = queryKey() - const states: UseQueryResult[] = [] + const states: DefinedUseQueryResult[] = [] function Page() { const state = useQuery(key, () => 'data', { @@ -3154,7 +3155,7 @@ describe('useQuery', () => { it('should keep initial data when the query key changes', async () => { const key = queryKey() - const states: UseQueryResult<{ count: number }>[] = [] + const states: DefinedUseQueryResult<{ count: number }>[] = [] function Page() { const [count, setCount] = React.useState(0) @@ -3629,7 +3630,7 @@ describe('useQuery', () => { it('should mark query as fetching, when using initialData', async () => { const key = queryKey() - const results: UseQueryResult[] = [] + const results: DefinedUseQueryResult[] = [] function Page() { const result = useQuery(key, () => 'serverData', { initialData: 'data' }) @@ -3648,7 +3649,7 @@ describe('useQuery', () => { it('should initialize state properly, when initialData is falsy', async () => { const key = queryKey() - const results: UseQueryResult[] = [] + const results: DefinedUseQueryResult[] = [] function Page() { const result = useQuery(key, () => 1, { initialData: 0 }) @@ -3668,7 +3669,7 @@ describe('useQuery', () => { // // See https://github.com/tannerlinsley/react-query/issues/214 it('data should persist when enabled is changed to false', async () => { const key = queryKey() - const results: UseQueryResult[] = [] + const results: DefinedUseQueryResult[] = [] function Page() { const [shouldFetch, setShouldFetch] = React.useState(true) diff --git a/packages/react-query/src/__tests__/useQuery.types.test.tsx b/packages/react-query/src/__tests__/useQuery.types.test.tsx index 2861e45f7d..d049b53e00 100644 --- a/packages/react-query/src/__tests__/useQuery.types.test.tsx +++ b/packages/react-query/src/__tests__/useQuery.types.test.tsx @@ -8,9 +8,9 @@ export type Equal = (() => T extends X ? 1 : 2) extends < export type Expect = T -const doNotExecute = (_func: () => void) => {} +const doNotExecute = (_func: () => void) => true -describe('useQuery', () => { +describe('initialData', () => { describe('Config object overload', () => { it('TData should always be defined when initialData is provided as an object', () => { doNotExecute(() => { diff --git a/packages/react-query/src/types.ts b/packages/react-query/src/types.ts index 20b8817cb1..c83bb5b26a 100644 --- a/packages/react-query/src/types.ts +++ b/packages/react-query/src/types.ts @@ -65,6 +65,11 @@ export type UseQueryResult< TError = unknown, > = UseBaseQueryResult +export type DefinedUseQueryResult = Omit< + UseQueryResult, + 'data' +> & { data: TData } + export type UseInfiniteQueryResult< TData = unknown, TError = unknown, diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 02504a9026..1fb99c4d24 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -4,7 +4,7 @@ import { QueryKey, QueryObserver, } from '@tanstack/query-core' -import { UseQueryOptions, UseQueryResult } from './types' +import { DefinedUseQueryResult, UseQueryOptions, UseQueryResult } from './types' import { useBaseQuery } from './useBaseQuery' // HOOK @@ -31,7 +31,7 @@ export function useQuery< UseQueryOptions, 'initialData' > & { initialData: TData | (() => TData) }, -): Omit, 'data'> & { data: TData } +): DefinedUseQueryResult export function useQuery< TQueryFnData = unknown, @@ -57,7 +57,7 @@ export function useQuery< UseQueryOptions, 'queryKey' | 'initialData' > & { initialData: TData | (() => TData) }, -): Omit, 'data'> & { data: TData } +): DefinedUseQueryResult export function useQuery< TQueryFnData = unknown, @@ -85,7 +85,7 @@ export function useQuery< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' > & { initialData: TData | (() => TData) }, -): Omit, 'data'> & { data: TData } +): DefinedUseQueryResult export function useQuery< TQueryFnData, From 260175b576d31cac3bec01ed983917140c766844 Mon Sep 17 00:00:00 2001 From: Dominik Dorfmeister Date: Sat, 16 Jul 2022 13:31:50 +0200 Subject: [PATCH 8/8] Apply suggestions from code review --- packages/react-query/src/useQuery.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/react-query/src/useQuery.ts b/packages/react-query/src/useQuery.ts index 1fb99c4d24..eee97a3f4b 100644 --- a/packages/react-query/src/useQuery.ts +++ b/packages/react-query/src/useQuery.ts @@ -30,7 +30,7 @@ export function useQuery< options: Omit< UseQueryOptions, 'initialData' - > & { initialData: TData | (() => TData) }, + > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery< @@ -56,7 +56,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'initialData' - > & { initialData: TData | (() => TData) }, + > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery< @@ -84,7 +84,7 @@ export function useQuery< options?: Omit< UseQueryOptions, 'queryKey' | 'queryFn' | 'initialData' - > & { initialData: TData | (() => TData) }, + > & { initialData: TQueryFnData | (() => TQueryFnData) }, ): DefinedUseQueryResult export function useQuery<