Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Svelte: passing a store to createQuery breaks types when using `select`

Ouverte
#7,673 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

  • #10578 par @ousamabenyounes — fermée sans fusion

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
42/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
typescript
Domaine
frontend

Piste de recherche

Reproduisez le problème dans le playground TypeScript lié, en comparant createQuery avec un objet d’options direct et avec un store dérivé. Commencez au point d’entrée du typage de createQuery dans Svelte et suivez la façon dont select reçoit son type de données. Le travail est considéré comme terminé lorsque select est correctement inféré lorsque les options sont transmises via un store dérivé, sans casser le comportement existant avec l’objet direct.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

package: svelte-query
Describe the bug

using the latest version of tanstack query svelte, passing derived store and using select to select subset of the data makes the data in select type any and breaks the query types.

Playground link: https://tsplay.dev/mpkn6N

Example. This works:

// query type works as expected
const queryThatWorks = createQuery(
  derived(intervalMs, ($intervalMs) => ({
    queryKey: ["refetch"],
    queryFn: async () => ({ a: { b: { c: "" } } }),
    refetchInterval: $intervalMs,
  })),
);
const result1 = get(queryThatWorks)?.data;
//     ^? const result: {a: Eb: { c: string; 3; };..

this doesn't:

// `select` data is type any
const queryWithBrokenTypes = createQuery(
  derived(intervalMs, ($intervalMs) => ({
    queryKey: ["refetch"],
    queryFn: async () => ({ a: { b: { c: "" } } }),
    refetchInterval: $intervalMs,
    // data type is any, never inferred
    select: (data) => data,
    //       ^? (parameter) data: any
  })),
);
const result2 = get(queryWithBrokenTypes)?.data;
//     ^? const result2: any

this shows that select works without derived:

// `select` works without `derived`
const queryWithSelectWorks = createQuery({
  queryKey: ["refetch"],
  queryFn: async () => ({ a: { b: { c: "" } } }),
  // data type is any, never inferred
  select: (data) => data,
  //       ^? (parameter) data: {a: {b: { c: string; ) ;..
});

const result3 = get(queryWithSelectWorks)?.data;
//     ^? const result3: { a: {b: (c: string; ); );
Your minimal, reproducible example

https://tsplay.dev/mpkn6N

Steps to reproduce
  1. create a query in svelte,
  2. pass a derived store,
  3. use select in the query,
  4. notice how data type is any.

see twoslash shiki comments

Expected behavior

it should not break types when passing a store and using select to createQuery

How often does this bug happen?

Every time

Screenshots or Videos

CleanShot 2024-07-04 at 19 06 19

Platform

all

Tanstack Query adapter

svelte-query

TanStack Query version

^5.49.1

TypeScript version

6.5.2

Additional context

No response

Langage dominant
TypeScript
Étoiles
50.4k
Forks
4.3k
Merge moyen
12 h 18 min
PR mergées (30 j)
488

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de TanStack/query

Toutes les issues de TanStack/query

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.