Skip to content

Options inference broken when using Omit<UseQueryOptions<IUser, Error, IUser>, 'queryKey'> #8401

Open
@hu-ke

Description

Describe the bug

Description:

When using Omit<UseQueryOptions<IUser, Error, IUser>, 'queryKey'> for defining options in a wrapper function, TypeScript fails to infer the correct types for properties inside options. For example, the select option does not show any type inference.

Code Example

import {
  useQuery,
  UseQueryOptions,
} from '@tanstack/vue-query';
import { Ref, ref } from 'vue';

interface IUser {
  name: string;
  age: number;
  address: string;
}

interface UseRequstQuery {
  url: Ref<string>;
  options: Omit<UseQueryOptions<IUser, Error, IUser>, 'queryKey'>;
}

export const useRequstUser = ({
  url,
  options
}: UseRequstQuery) => {
  return useQuery<IUser, Error>({
    queryKey: ['requestUser', url],
    queryFn: async () => {
      return await Promise.resolve({
        name: 'danny',
        age: 30,
        address: `address: ${url.value}`
      });
    },
    ...options
  });
};

const address = ref('https://xxxx.com');
const user = useRequstUser({
  url: address,
  options: {
    sele // No type inference here
  }
});

Your minimal, reproducible example

https://www.typescriptlang.org/play/?ssl=18&ssc=14&pln=18&pc=27#code/JYWwDg9gTgLgBAbwFBzgVwM4FMCKatQCeANCnAKrZ4GEDyYMwEAdhqQL5wBmUEIcAcgACMAIasxAYwDWAegBu+ALQBHfEQEBuJKEixEcAEpYuxOMAzHTcKCbicefQYqwCkO5jAJdRkrHABJSgJEMmZRECwALjgMGChgZgBzUlRRJOi4ZjQQACMCVLhRABNi2wwMGLiE5KR2d0SvKB8-CmxjNTjqIlDUNCgAGxirAB5qxKSAPm1UCAYmVhjaEGAYEeDuunmWDBGg7CgzAFEoXkPA4KhJswE1GgBpLEIBabr3LAAPPXhJHfhMLAdTAwS5wAC8cAAFMg+oNCnNGDs6jFgkCuupCABKcGTXo2LAwfrMdBUDF7S7HU7QSbQsioO5ER6EGIAbQEtjucUuAjM-QGAF1CvSMQAxZgxUQYQjMSRQ7Fg3Ew1DK2yEqDE0QAd1EqzgAAVeCtsAA6coQAbyLC05U2rIRTICYriZjPIW29KZADMAAY3TaSmUsBUYgADAPlSpwAAkCD57BDdOV7ExifYbuNGYRCwwZGTbyQvwkRVKEfB+K4kIEAAsYDAwJVZLIPs2PsbfiABCnC3ESSEIQC0SCDtb0IMJSWg2wyFmdjElahsAMsLm6pigA

Steps to reproduce

/

Expected behavior

The options parameter in useRequstUser should provide type inference for fields like select

How often does this bug happen?

None

Screenshots or Videos

No response

Platform

macOS
Chrome

Tanstack Query adapter

None

TanStack Query version

5.62.2

TypeScript version

No response

Additional context

No response

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions