diff --git a/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx index be3a19cb97..e37b0e085e 100644 --- a/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx +++ b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx @@ -136,4 +136,42 @@ describe('infiniteQueryOptions', () => { }> >() }) + + it('should infer defined types when initialData is a function that can return undefined', () => { + const options = infiniteQueryOptions({ + queryKey: queryKey(), + queryFn: () => ({ wow: true }), + initialData: () => + Math.random() > 0.5 + ? { + pageParams: [undefined], + pages: [{ wow: true }], + } + : undefined, + getNextPageParam: () => 10, + initialPageParam: 0, + }) + + expectTypeOf(() => useInfiniteQuery(() => options).data).toEqualTypeOf< + () => InfiniteData<{ wow: boolean }, unknown> | undefined + >() + }) + + it('should infer defined types when initialData is undefined or defined', () => { + const initialData: + | InfiniteData<{ wow: boolean }, unknown> + | undefined = undefined + + const options = infiniteQueryOptions({ + queryKey: queryKey(), + queryFn: () => ({ wow: true }), + initialData, + getNextPageParam: () => 10, + initialPageParam: 0, + }) + + expectTypeOf(() => useInfiniteQuery(() => options).data).toEqualTypeOf< + () => InfiniteData<{ wow: boolean }, unknown> | undefined + >() + }) }) diff --git a/packages/solid-query/src/infiniteQueryOptions.ts b/packages/solid-query/src/infiniteQueryOptions.ts index 1648882d2f..45412b3247 100644 --- a/packages/solid-query/src/infiniteQueryOptions.ts +++ b/packages/solid-query/src/infiniteQueryOptions.ts @@ -1,6 +1,7 @@ import type { DefaultError, InfiniteData, + InitialDataFunction, NonUndefinedGuard, QueryKey, QueryKeyWithDataTag, @@ -16,7 +17,12 @@ export type UndefinedInitialDataInfiniteOptions< TPageParam = unknown, > = Accessor< InfiniteQueryOptions & { - initialData?: undefined + initialData?: + | undefined + | NonUndefinedGuard> + | InitialDataFunction< + NonUndefinedGuard> + > } >