diff --git a/.changeset/silent-flows-options.md b/.changeset/silent-flows-options.md new file mode 100644 index 00000000000..fc02ae34b9a --- /dev/null +++ b/.changeset/silent-flows-options.md @@ -0,0 +1,5 @@ +--- +'@tanstack/solid-query': patch +--- + +types(solid-query): support optional initialData in infiniteQueryOptions diff --git a/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx b/packages/solid-query/src/__tests__/infiniteQueryOptions.test-d.tsx index be3a19cb97d..e37b0e085e1 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 1648882d2f3..45412b32474 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> + > } >