-
-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Description
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 | PlayerProfileDataNoting 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.