From 1ab0afa6b86c69026db2111380927a128db58113 Mon Sep 17 00:00:00 2001 From: Raashish Aggarwal <94279692+raashish1601@users.noreply.github.com> Date: Sat, 30 May 2026 16:17:30 +0530 Subject: [PATCH] fix(query-core): infer setQueriesData data type from query filters --- .../src/__tests__/queryClient.test-d.tsx | 6 ++--- packages/query-core/src/queryClient.ts | 26 +++++++++++++++++++ 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/packages/query-core/src/__tests__/queryClient.test-d.tsx b/packages/query-core/src/__tests__/queryClient.test-d.tsx index 4cd092ddd64..39737e6892e 100644 --- a/packages/query-core/src/__tests__/queryClient.test-d.tsx +++ b/packages/query-core/src/__tests__/queryClient.test-d.tsx @@ -293,7 +293,7 @@ describe('fully typed usage', () => { >() expectTypeOf(queryData3).toEqualTypeOf() - const queriesData2 = queryClient.setQueriesData(queryFilters, { foo: '' }) // TODO: types here are wrong and coming up undefined + const queriesData2 = queryClient.setQueriesData(queryFilters, { foo: '' }) type SetQueriesDataUpdaterArg = Parameters< typeof queryClient.setQueriesData >[1] @@ -301,7 +301,7 @@ describe('fully typed usage', () => { expectTypeOf().toEqualTypeOf< Updater >() - expectTypeOf(queriesData2).toEqualTypeOf>() + expectTypeOf(queriesData2).toEqualTypeOf>() const queryState = queryClient.getQueryState(filterKey) expectTypeOf(queryState).toEqualTypeOf< @@ -432,7 +432,7 @@ describe('fully typed usage', () => { >() expectTypeOf(queryData3).toEqualTypeOf() - const queriesData2 = queryClient.setQueriesData(queryFilters, { foo: '' }) // TODO: types here are wrong and coming up undefined + const queriesData2 = queryClient.setQueriesData(queryFilters, { foo: '' }) type SetQueriesDataUpdaterArg = Parameters< typeof queryClient.setQueriesData >[1] diff --git a/packages/query-core/src/queryClient.ts b/packages/query-core/src/queryClient.ts index d82106c7375..c7a4424997a 100644 --- a/packages/query-core/src/queryClient.ts +++ b/packages/query-core/src/queryClient.ts @@ -54,6 +54,11 @@ interface MutationDefaults { defaultOptions: MutationOptions } +type QueryDataForFilters = + TQueryFilters extends QueryFilters + ? InferDataFromTag + : unknown + // CLASS export class QueryClient { @@ -206,6 +211,27 @@ export class QueryClient { .setData(data, { ...options, manual: true }) } + setQueriesData>( + filters: TQueryFilters, + updater: Updater< + NoInfer> | undefined, + NoInfer> | undefined + >, + options?: SetDataOptions, + ): Array< + [QueryKey, QueryDataForFilters | undefined] + > + setQueriesData< + TQueryFnData, + TQueryFilters extends QueryFilters = QueryFilters, + >( + filters: TQueryFilters, + updater: Updater< + NoInfer | undefined, + NoInfer | undefined + >, + options?: SetDataOptions, + ): Array<[QueryKey, TQueryFnData | undefined]> setQueriesData< TQueryFnData, TQueryFilters extends QueryFilters = QueryFilters,