Skip to content

Commit a8b5368

Browse files
fix(vue-query): parameterize suspense return type by TResult
The previous shape pinned `suspense` to `Promise<QueryObserverResult<TData, TError>>` inside the distributive conditional, so awaiting `suspense()` lost type precision when `UseBaseQueryReturnType` was instantiated with `DefinedQueryObserverResult` (data became `TData | undefined` again) or `InfiniteQueryObserverResult` (no `fetchNextPage`/`hasNextPage`/`data.pages`). Lifting `suspense` outside the distributive arm and typing it as `Promise<TResult>` keeps the per-property mapping distributive but lets the suspense result carry the parameterized observer type — matching the runtime already returned by `observer.fetchOptimistic()` / `getOptimisticResult()`.
1 parent 7375ffb commit a8b5368

1 file changed

Lines changed: 4 additions & 4 deletions

File tree

packages/vue-query/src/useBaseQuery.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,18 @@ export type UseBaseQueryReturnType<
3535
TData,
3636
TError,
3737
TResult = QueryObserverResult<TData, TError>,
38-
> = TResult extends unknown
38+
> = (TResult extends unknown
3939
? {
4040
[K in keyof TResult]: K extends
4141
| 'fetchNextPage'
4242
| 'fetchPreviousPage'
4343
| 'refetch'
4444
? TResult[K]
4545
: Ref<Readonly<TResult>[K]>
46-
} & {
47-
suspense: () => Promise<QueryObserverResult<TData, TError>>
4846
}
49-
: never
47+
: never) & {
48+
suspense: () => Promise<TResult>
49+
}
5050

5151
type UseQueryOptionsGeneric<
5252
TQueryFnData,

0 commit comments

Comments
 (0)