query icon indicating copy to clipboard operation
query copied to clipboard

Inferred type references an inaccessible unique symbol type after updating from 5.61.5 to 5.62.0

Open antoine-delahaye opened this issue 9 months ago • 3 comments

Describe the bug

After updating TanStack from version 5.61.5 to 5.62.0 (not solved with 5.69.0), I encountered the following TypeScript error on every function that returns queryOptions or infiniteQueryOptions:

TS2527: The inferred type of 'queryPlan' references an inaccessible 'unique symbol' type. A type annotation is necessary.

Your minimal, reproducible example

https://www.typescriptlang.org/play/?ts=5.7.3#code/JYWwDg9gTgLgBAbwLACg5wI4FcCmUCeA8mDMBAHYDOANKusOQGYPAw4CKuBxpFlqAXziMoEEHADkAARgBDKnIDGAawD08gOZYANrKgBabHnz6cADzB5QOcnO0SA3KlSLdlSnACiZ2eG04AZTwAN2BFHEQ6ODAsACNtMMwuInIcAApzXzB-AEkAEwAuOHIsEFi8AEpItHQ4KBwYLChyJOMeMio05Bra1oIAaRx8IoBtCQkAXVoe2qMCADFyIrSKouCIYDy4AF4APkQBad70G1l4nEK4AEIrzL8cfKPagQqnFAFnFBj4xLn8AFl5PgVtVevVGs04AxmORWBxku0+F0or0-oNhnAxpMnqjkotlmBZBocAAFPS+VZwdabHb7BCHFG1FikWTaMnEslQXxFACMONqxJgJPqoQgWEo7NJ5JAyyqezgfMZ6EFADlzEKiVKuTK4CD5TzGS83h93kA

Steps to reproduce

Inside a Angular's service :

public queryOne(exampleId: number) {
    return queryOptions({
      queryKey: [this.getFetchPath(...)],
      queryFn: (): Promise<ExampleDTO[]> => this.getOne(...),
      enabled: !!exampleId,
    });
}

public queryMany(paramsData) {
    return infiniteQueryOptions({
      queryKey: [...],
      queryFn: (pageParam): Promise<ExampleDTO[]> => this.getMany(...),
      ...,
    });
}

Expected behavior

The code should compile without any TypeScript errors without any type annotation.

How often does this bug happen?

Every time

Screenshots or Videos

No response

Platform

  • OS: Windows
  • Framework: Angular v19.2.2

Tanstack Query adapter

angular-query

TanStack Query version

v5.62.0

TypeScript version

v5.7.3

Additional context

I managed to get rid of this error by annotating queryOptions and function return type :

public queryMany(...): CreateQueryOptions<ExampleDTO[]> {
    return queryOptions<ExampleDTO[]>(...);
}

However, unable to annotate properly infiniteQueryOptions because I got another type error :

public queryManyWithPagination(...): CreateInfiniteQueryOptions<ExampleDTO[]> {
    return infiniteQueryOptions<ExampleDTO[]>(...);
  }

TS2322: Type CreateInfiniteQueryOptions<StopPointResponseDTO[], Error, InfiniteData<StopPointResponseDTO[], unknown>, StopPointResponseDTO[], readonly unknown[], unknown> & { ...; } & { ...; } is not assignable to type CreateInfiniteQueryOptions<StopPointResponseDTO[], Error, StopPointResponseDTO[], StopPointResponseDTO[], readonly unknown[], unknown>

antoine-delahaye avatar Mar 19 '25 11:03 antoine-delahaye

Doesn't seem to be an angular-query specific issue. Same issue occurs for @tanstack/solid-query

jeroenpg avatar Mar 19 '25 20:03 jeroenpg

This may be the same problem as #8453 which isn't fully solved

@TkDodo FYI

arnoud-dv avatar Mar 19 '25 22:03 arnoud-dv

@antoine-delahaye Could you re-check your TypeScript playground reproduction if there's still any problem? I currently do not see a type error there.

arnoud-dv avatar Apr 14 '25 11:04 arnoud-dv

It's still being reproduced with solid-query when I'm trying to generate type declarations for my api client package that generates queries with @hey-api/openapi-ts. TypeError starts to appear if you have delcaration: true in your tsconfig

vbifonixor avatar Jun 23 '25 10:06 vbifonixor

It's still being reproduced with solid-query: TypeError starts to appear if you have delcaration: true in your tsconfig

Confirm for solid-query 5.81.5

dannylin108 avatar Jul 06 '25 09:07 dannylin108

Same issue with"@tanstack/solid-query": "^5.83.0".

When declaration: true is set in tsconfig, every exported const that returns a queryOptions factory causes the mentioned error. However, if the export keyword is removed or declarations are disabled, the error no longer occurs.

export const someQueryOptions = (param: string) =>
	queryOptions({
		queryFn: async () => {
			return [];
		},
		queryKey: ["some", "key", param],
	});

TS2527: The inferred type of someQueryOptions references an inaccessible unique symbol type. A type annotation is necessary.

Image

EDIT: Downgrade to v5.61.5 removes this issue.

Hookyns avatar Jul 22 '25 00:07 Hookyns

I think isn't reproducible on Angular anymore since aligning with the latest react-query queryOptions.

That might fix it for the Solid adapter too.

arnoud-dv avatar Jul 22 '25 07:07 arnoud-dv

Still reproduces on version 5.85.2 of solid-query

Here's a rather minimal stackblitz example https://stackblitz.com/edit/solidjs-templates-5z94gjr6?file=src%2Fapi%2FqueryOptions.ts

Because of this issue it's impossible to make a usable typesafe package with exported predefined queryOptions for useQuery with versions after 5.61.5

vbifonixor avatar Aug 14 '25 11:08 vbifonixor

someone please take a look at the differences between the angular, react and solid queryOptions implementation. It works fine in react:

https://www.typescriptlang.org/play/?#code/JYWwDg9gTgLgBAbzgRwK4FMoE8DyYbAQB2AznAL5wBmUEIcA5AAIwCGpbAxgNYD0U6VpxgBaNJiwMA3ACgZ6AB6RYcTsRLwSrcABt0ARQzY8BdXAC8cABQBKCwD4ZcFEdz5CpKwifOXEgGJEAFxwrCRYRJzWSOLYANLoWAA0cCTAAOZErDoUdub2iD6+cAIwqFBEiHAAFug6OhAhDADu0DoAJgwUssXkSUV+8YkhANoMWroGrgwAuv3O5DayQA

so it shouldn’t be too hard to figure out what solid is doing differntly

TkDodo avatar Aug 14 '25 13:08 TkDodo

the same error shows up in svelte-query as well: https://www.typescriptlang.org/play/?#code/ATCWFsAcHsCcBdgG9gEcCuBTWBPA8pPKNAHYDOwAvsAGazTjADkAAvAIbkcDGA1gPRkAbpgA28TAFoM2HEwBQ8zAA8YCYN1JlEwsRICKWXASJbgAXhAzjhYuQAUSeSCtGcAaUw4AXMADaTADm9OiQZEwAugA0zi7WOABiJL72AJQWAHzIlDEuwNrsopgAKhCYvgCswABUwACMAAxNuVSpQA

the same fix from #9668 can be applied

Zen-cronic avatar Sep 20 '25 21:09 Zen-cronic

Still shows up for infiniteQueryOptions in solid-query. I feel like the same fix could be applied too

vbifonixor avatar Oct 15 '25 15:10 vbifonixor

@vbifonixor Please create a new issue with a repro. That allows anyone that wants to work on it to clearly see the issue and that it's for solid-query specifically. If you want to fix this you're welcome to submit a PR ofcourse.

arnoud-dv avatar Oct 15 '25 18:10 arnoud-dv