T
TanStack11mo ago
ratty-blush

`pageParam` never seems to get inferred correctly from initialPageParam

export const useEnumerateProjectsInfiniteQuery = <
TData = EnumerateProjectsResponse,
>(
requestData: EnumerateProjectsRequest,
{
select,
...options
}: Omit<
UseInfiniteQueryOptions<EnumerateProjectsResponse, Error | ZodError, TData>,
"queryFn" | "queryKey" | "getNextPageParam" | "initialPageParam"
> = {},
) => {
return useInfiniteQuery({
queryKey: [
"projects",
{ search: { continuation: requestData.search.continuation } },
],
queryFn: ({ pageParam, signal }) =>
enumerateProjects(
{ ...requestData, search: { continuation: pageParam } },
signal,
),
initialPageParam: requestData.search.continuation,
getNextPageParam: (lastPage) => lastPage.continuation,
...options,
});
};
export const useEnumerateProjectsInfiniteQuery = <
TData = EnumerateProjectsResponse,
>(
requestData: EnumerateProjectsRequest,
{
select,
...options
}: Omit<
UseInfiniteQueryOptions<EnumerateProjectsResponse, Error | ZodError, TData>,
"queryFn" | "queryKey" | "getNextPageParam" | "initialPageParam"
> = {},
) => {
return useInfiniteQuery({
queryKey: [
"projects",
{ search: { continuation: requestData.search.continuation } },
],
queryFn: ({ pageParam, signal }) =>
enumerateProjects(
{ ...requestData, search: { continuation: pageParam } },
signal,
),
initialPageParam: requestData.search.continuation,
getNextPageParam: (lastPage) => lastPage.continuation,
...options,
});
};
requestData.search.continuation is typed as string | undefined but pageParam is unknown
5 Replies
sunny-green
sunny-green11mo ago
Try using https://tanstack.com/query/latest/docs/framework/react/reference/infiniteQueryOptions instead of the generic, you should get easier and more accurate type inference
infiniteQueryOptions | TanStack Query React Docs
tsx infiniteQueryOptions({ queryKey, ...options, }) Options You can generally pass everything to infiniteQueryOptions that you can also pass to . Some options will have no effect when then forwarded t...
ratty-blush
ratty-blushOP11mo ago
Tried that already - pageParam is still unknown
sunny-green
sunny-green11mo ago
Perhaps provide a default initalPageParam so the type is always string initialPageParam is required; unrefined will not be accepted
ratty-blush
ratty-blushOP11mo ago
Well my cursor is a continuation token - therefore the first page is technically no continuation token so the type would be string | undefined
rising-crimson
rising-crimson11mo ago
Show a typescript playground please

Did you find this page helpful?