From 5c7f5d31a40baceb588c8c6e9f8fa00f676bb314 Mon Sep 17 00:00:00 2001 From: Raashish Aggarwal <94279692+raashish1601@users.noreply.github.com> Date: Sat, 30 May 2026 17:20:55 +0530 Subject: [PATCH] Fix preact infinite query pageParam result typing --- .../src/__tests__/useInfiniteQuery.test-d.tsx | 6 ++-- packages/preact-query/src/useInfiniteQuery.ts | 28 +++++++++++++++++-- 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx b/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx index b11002c9e2c..286405bb08b 100644 --- a/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx +++ b/packages/preact-query/src/__tests__/useInfiniteQuery.test-d.tsx @@ -61,9 +61,8 @@ describe('select', () => { getNextPageParam: () => undefined, }) - // TODO: Order of generics prevents pageParams to be typed correctly. Using `unknown` for now expectTypeOf(infiniteQuery.data).toEqualTypeOf< - InfiniteData | undefined + InfiniteData | undefined >() }) @@ -113,9 +112,8 @@ describe('getNextPageParam / getPreviousPageParam', () => { }, }) - // TODO: Order of generics prevents pageParams to be typed correctly. Using `unknown` for now expectTypeOf(infiniteQuery.data).toEqualTypeOf< - InfiniteData | undefined + InfiniteData | undefined >() }) }) diff --git a/packages/preact-query/src/useInfiniteQuery.ts b/packages/preact-query/src/useInfiniteQuery.ts index f78c14a2375..d475ba987fc 100644 --- a/packages/preact-query/src/useInfiniteQuery.ts +++ b/packages/preact-query/src/useInfiniteQuery.ts @@ -18,6 +18,19 @@ import type { } from './types' import { useBaseQuery } from './useBaseQuery' +type IsUnknown = unknown extends T + ? [T] extends [never] + ? false + : true + : false + +type ResolvePageParamData = + TData extends InfiniteData + ? IsUnknown extends true + ? InfiniteData + : TData + : TData + export function useInfiniteQuery< TQueryFnData, TError = DefaultError, @@ -33,7 +46,10 @@ export function useInfiniteQuery< TPageParam >, queryClient?: QueryClient, -): DefinedUseInfiniteQueryResult +): DefinedUseInfiniteQueryResult< + ResolvePageParamData, + TError +> export function useInfiniteQuery< TQueryFnData, @@ -50,7 +66,10 @@ export function useInfiniteQuery< TPageParam >, queryClient?: QueryClient, -): UseInfiniteQueryResult +): UseInfiniteQueryResult< + ResolvePageParamData, + TError +> export function useInfiniteQuery< TQueryFnData, @@ -67,7 +86,10 @@ export function useInfiniteQuery< TPageParam >, queryClient?: QueryClient, -): UseInfiniteQueryResult +): UseInfiniteQueryResult< + ResolvePageParamData, + TError +> export function useInfiniteQuery( options: UseInfiniteQueryOptions,