From 1e9d65d8fbdca27b178c5e742f58ed4b4447f54a Mon Sep 17 00:00:00 2001 From: Cha Seungha Date: Mon, 28 Apr 2025 16:36:20 +0900 Subject: [PATCH 1/4] fix: Correct bug where non-undefined values in initialData are not treated as defined --- packages/vue-query/src/useQuery.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/vue-query/src/useQuery.ts b/packages/vue-query/src/useQuery.ts index c767f54207..26e258246b 100644 --- a/packages/vue-query/src/useQuery.ts +++ b/packages/vue-query/src/useQuery.ts @@ -65,10 +65,7 @@ export type UndefinedInitialQueryOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { - initialData?: - | undefined - | InitialDataFunction> - | NonUndefinedGuard + initialData?: undefined | InitialDataFunction> } export type DefinedInitialQueryOptions< From 2ff92c5ebbc1331ea62a6222e70219c591078d0e Mon Sep 17 00:00:00 2001 From: Cha Seungha Date: Mon, 28 Apr 2025 16:40:07 +0900 Subject: [PATCH 2/4] test: Update test to ensure data is TData only when initialData is defined --- packages/vue-query/src/__tests__/useQueries.test-d.ts | 6 ++---- packages/vue-query/src/__tests__/useQuery.test-d.ts | 4 ++-- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/vue-query/src/__tests__/useQueries.test-d.ts b/packages/vue-query/src/__tests__/useQueries.test-d.ts index 9e13e2f465..c67de7b1a9 100644 --- a/packages/vue-query/src/__tests__/useQueries.test-d.ts +++ b/packages/vue-query/src/__tests__/useQueries.test-d.ts @@ -35,7 +35,7 @@ describe('UseQueries config object overload', () => { }) expectTypeOf(queriesState[0].data).toEqualTypeOf<{ wow: boolean }>() - expectTypeOf(queriesState[1].data).toEqualTypeOf() + expectTypeOf(queriesState[1].data).toEqualTypeOf() expectTypeOf(queriesState[2].data).toEqualTypeOf() }) @@ -54,9 +54,7 @@ describe('UseQueries config object overload', () => { const { value: queriesState } = useQueries({ queries: [options] }) - expectTypeOf(queriesState[0].data).toEqualTypeOf< - { wow: boolean } | undefined - >() + expectTypeOf(queriesState[0].data).toEqualTypeOf<{ wow: boolean }>() }) it('should be possible to define a different TData than TQueryFnData using select with queryOptions spread into useQueries', () => { diff --git a/packages/vue-query/src/__tests__/useQuery.test-d.ts b/packages/vue-query/src/__tests__/useQuery.test-d.ts index 21ebfa8d6e..eb92d7a1c9 100644 --- a/packages/vue-query/src/__tests__/useQuery.test-d.ts +++ b/packages/vue-query/src/__tests__/useQuery.test-d.ts @@ -23,7 +23,7 @@ describe('useQuery', () => { }), ) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() }) it('TData should be defined when passed through queryOptions', () => { @@ -40,7 +40,7 @@ describe('useQuery', () => { }) const { data } = reactive(useQuery(options)) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() }) it('should be possible to define a different TData than TQueryFnData using select with queryOptions spread into useQuery', () => { From 6e737790314e343002ca31ee589860efc8b727b3 Mon Sep 17 00:00:00 2001 From: Cha Seungha Date: Mon, 28 Apr 2025 18:10:24 +0900 Subject: [PATCH 3/4] fix: Modified to recognize UndefinedInitialQueryOptions when a function returning undefined is used in initialData. --- packages/vue-query/src/useQuery.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/vue-query/src/useQuery.ts b/packages/vue-query/src/useQuery.ts index 26e258246b..9ac47bd953 100644 --- a/packages/vue-query/src/useQuery.ts +++ b/packages/vue-query/src/useQuery.ts @@ -3,7 +3,6 @@ import { useBaseQuery } from './useBaseQuery' import type { DefaultError, DefinedQueryObserverResult, - InitialDataFunction, QueryKey, QueryObserverOptions, } from '@tanstack/query-core' @@ -65,7 +64,7 @@ export type UndefinedInitialQueryOptions< TData = TQueryFnData, TQueryKey extends QueryKey = QueryKey, > = UseQueryOptions & { - initialData?: undefined | InitialDataFunction> + initialData?: undefined | (() => undefined) } export type DefinedInitialQueryOptions< From 7684df1d2c8adff961239adf755562910df5c063 Mon Sep 17 00:00:00 2001 From: Cha Seungha Date: Mon, 28 Apr 2025 18:13:23 +0900 Subject: [PATCH 4/4] test: update test result values for case where a function returning TData is passed to initialData --- packages/vue-query/src/__tests__/useQuery.test-d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vue-query/src/__tests__/useQuery.test-d.ts b/packages/vue-query/src/__tests__/useQuery.test-d.ts index eb92d7a1c9..a02ee4b638 100644 --- a/packages/vue-query/src/__tests__/useQuery.test-d.ts +++ b/packages/vue-query/src/__tests__/useQuery.test-d.ts @@ -74,7 +74,7 @@ describe('useQuery', () => { }), ) - expectTypeOf(data).toEqualTypeOf<{ wow: boolean } | undefined>() + expectTypeOf(data).toEqualTypeOf<{ wow: boolean }>() }) it('TData should have undefined in the union when initialData is NOT provided', () => {