diff --git a/packages/angular-query/src/__tests__/inject-query.test-d.ts b/packages/angular-query/src/__tests__/inject-query.test-d.ts index f872892eeb2..fb7537a55b1 100644 --- a/packages/angular-query/src/__tests__/inject-query.test-d.ts +++ b/packages/angular-query/src/__tests__/inject-query.test-d.ts @@ -1,6 +1,7 @@ +import { signal } from '@angular/core' import { describe, expectTypeOf, it } from 'vitest' import { sleep } from '@tanstack/query-test-utils' -import { injectQuery, queryOptions, toResource } from '..' +import { injectQuery, queryOptions, skipToken, toResource } from '..' import type { CreateQueryOptions, CreateQueryResult } from '..' import type { Resource, Signal } from '@angular/core' @@ -255,3 +256,18 @@ describe('injectQuery options', () => { expectTypeOf().not.toHaveProperty('throwOnError') }) }) + +describe('skipToken', () => { + it('should narrow data to string | undefined for a conditional skipToken inside a whole-options getter', () => { + const postId = signal(undefined) + const query = injectQuery(() => ({ + queryKey: ['posts', postId()], + queryFn: + postId() != null + ? () => Promise.resolve(`post ${postId()}`) + : skipToken, + })) + + expectTypeOf(query.data).toEqualTypeOf>() + }) +})