Svelte: passing a store to createQuery breaks types when using `select`
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
- #10578 von @ousamabenyounes — ohne Merge geschlossen
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 42/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- typescript
- Bereich
- frontend
Rechercherichtung
Reproduziere das Problem im verlinkten TypeScript Playground und vergleiche createQuery mit einem direkten Optionsobjekt und mit einem abgeleiteten Store. Beginne am Svelte-Typisierungseinstiegspunkt von createQuery und verfolge, wie select seinen Datentyp erhält. Als erledigt gilt die Aufgabe, wenn select korrekt inferiert wird, wenn Optionen über einen abgeleiteten Store übergeben werden, ohne das bestehende Verhalten mit dem direkten Objekt zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
Steps to reproduce
- create a query in svelte,
- pass a
derivedstore, - use
selectin the query, - notice how
datatype isany.
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
Platform
all
Tanstack Query adapter
svelte-query
TanStack Query version
^5.49.1
TypeScript version
6.5.2
Additional context
No response
- Vorherrschende Sprache
- TypeScript
- Sterne
- 50.4k
- Forks
- 4.3k
- Ø Merge
- 13 Std. 35 Min.
- Gemergte PRs (30 T.)
- 442
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus TanStack/query
-
QueryClient.isFetching and useIsFetching accept a fetchStatus filter and ignore itEvtl. vergeben @Apu-Emdad hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
Maintainer antworten meist innerhalb von 1 Tag
-
solid-query: STRICT_READ_UNTRACKED on Solid 2 — client()/options() read in component body (useMutation, useBaseQuery)Evtl. wieder frei @LeonxLJX hat das vor 44 Tagen übernommen, und es ist kein Pull Request offen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 84/100
TanStack/query#11358 · 2 Kommentare · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
solid-query 6.0.0-rc.5: onCacheEvent throws NotReadyError during a Solid 2 (rc.14+) transition landingEvtl. vergeben @UzumakiODZ hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 28/100
TanStack/query#12031 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
Explicit gcTime schedules a GC timer during SSR, retaining the whole render in memoryEvtl. vergeben @AdzerKI hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 25/100
TanStack/query#12025 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
restoreQueries and persisterGc throw on malformed persisted entriesEvtl. vergeben @VGontier-cmd hat das vor 12 Tagen übernommen. Offen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
Ähnliche Issues
-
The inspector never shows the instances field, so scaling out is unreachableEvtl. vergeben @Mrkewl hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
xevrion/breakscale#96 ·
Maintainer antworten meist innerhalb von 4 Tagen
-
Object parameters lose their structure when resources is enabledEvtl. vergeben @asts-top hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 2 Tagen
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
rossant/awesome-math#199 ·
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
jaegertracing/jaeger-ui#4618 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 70/100
mifi/lossless-cut#3125 ·
Maintainer antworten meist innerhalb von 1 Tag