Skip to content

Commit 08b211f

Browse files
authored
fix(types): do not drop readonly for partial QueryFilter matching (#9872)
* fix(types): do not drop readonly for partial QueryFilter matching * Create new-keys-raise.md
1 parent 35deec3 commit 08b211f

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

.changeset/new-keys-raise.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@tanstack/query-core": patch
3+
---
4+
5+
fix(types): do not drop readonly for partial QueryFilter matching

packages/query-core/src/__tests__/utils.test-d.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('QueryFilters', () => {
5050
expectTypeOf(filters.queryKey).toEqualTypeOf<
5151
| undefined
5252
| readonly []
53-
| ['key']
53+
| readonly ['key']
5454
| readonly [
5555
'key',
5656
{
@@ -61,6 +61,18 @@ describe('QueryFilters', () => {
6161
>()
6262
})
6363

64+
it('should work with readonly union types', () => {
65+
const filters: QueryFilters<
66+
readonly ['key'] | readonly ['key', 'something']
67+
> = {
68+
queryKey: ['key'],
69+
}
70+
71+
expectTypeOf(filters.queryKey).toEqualTypeOf<
72+
undefined | readonly [] | readonly ['key'] | readonly ['key', 'something']
73+
>()
74+
})
75+
6476
it('should error on invalid query keys', () => {
6577
assertType<QueryFilters<readonly ['key', { a: number; b: string }]>>({
6678
// @ts-expect-error cannot pass invalid query key

packages/query-core/src/utils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ type DropLast<T extends ReadonlyArray<unknown>> = T extends readonly [
2020
...infer R,
2121
unknown,
2222
]
23-
? R
23+
? readonly [...R]
2424
: never
2525

2626
type TuplePrefixes<T extends ReadonlyArray<unknown>> = T extends readonly []

0 commit comments

Comments
 (0)