Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
hu-ke opened this issue Dec 5, 2024 · 1 comment

Comments

@hu-ke
Copy link

hu-ke commented Dec 5, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants