Describe the bug
Indexing a query factory with a union type (UserType = "company" | "club" | "player" | "supporter") causes TypeScript type mismatches in useQuery, ensureQueryData, getQueryData, and so on. The issue arises because entityProfileQueries[userType] returns a union of query options with distinct queryKey types (e.g., { userType: "player" } vs. { userType: "supporter" }), while these utilities expect a single type.
The player and supporter queries share ServerPlayerResponse and a select function, but the error occurs for all UserType values due to the queryKey union.
Your minimal, reproducible example
https://stackblitz.com/edit/vitejs-vite-yzi9yarp?file=src%2Floader.ts
Steps to reproduce
In the MRE, the error arises from this line in src/loader.ts:
const data = await queryClient.ensureQueryData(queryOptions);
queryOptions is underlined with an error, and typeof data is incorrectly resolving to ServerPlayerResponse.
Expected behavior
The returned data from queryClient.ensureQueryData(queryOptions) should be a union of:
type TData = CompanyProfileData | ClubProfileData | PlayerProfileData
Noting that userType - player and supporter, share exactly the same TQueryFnData and TData from the select option, but queryKey differ by { userType: "player" } vs. { userType: "supporter" }
How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
- OS: all
- browser: all
- version: latest
Tanstack Query adapter
react-query
TanStack Query version
latest
TypeScript version
latest
Additional context
Affects useQuery, ensureQueryData, getQueryData, and so on.
Describe the bug
Indexing a query factory with a union type (
UserType = "company" | "club" | "player" | "supporter") causes TypeScript type mismatches in useQuery, ensureQueryData, getQueryData, and so on. The issue arises becauseentityProfileQueries[userType]returns a union of query options with distinct queryKey types (e.g.,{ userType: "player" }vs.{ userType: "supporter" }), while these utilities expect a single type.The player and supporter queries share
ServerPlayerResponseand a select function, but the error occurs for allUserTypevalues due to the queryKey union.Your minimal, reproducible example
https://stackblitz.com/edit/vitejs-vite-yzi9yarp?file=src%2Floader.ts
Steps to reproduce
In the MRE, the error arises from this line in
src/loader.ts:queryOptionsis underlined with an error, andtypeof datais incorrectly resolving toServerPlayerResponse.Expected behavior
The returned data from
queryClient.ensureQueryData(queryOptions)should be a union of:Noting that userType -
playerandsupporter, share exactly the sameTQueryFnDataandTDatafrom theselectoption, but queryKey differ by{ userType: "player" }vs.{ userType: "supporter" }How often does this bug happen?
Every time
Screenshots or Videos
No response
Platform
Tanstack Query adapter
react-query
TanStack Query version
latest
TypeScript version
latest
Additional context
Affects useQuery, ensureQueryData, getQueryData, and so on.