Skip to content

Commit 949c026

Browse files
JungzlRich-Harris
andauthored
fix: preserve tuple type in $state.snapshot (#16864)
* fix: preserve tuple type in `$state.snapshot` * Update .changeset/lucky-moles-enjoy.md --------- Co-authored-by: Rich Harris <[email protected]>
1 parent 4999734 commit 949c026

File tree

3 files changed

+23
-14
lines changed

3 files changed

+23
-14
lines changed

.changeset/lucky-moles-enjoy.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
fix: preserve tuple type in `$state.snapshot`

packages/svelte/src/ambient.d.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,15 @@ declare namespace $state {
8585
? NonReactive<T>
8686
: T extends { toJSON(): infer R }
8787
? R
88-
: T extends Array<infer U>
89-
? Array<Snapshot<U>>
90-
: T extends object
91-
? T extends { [key: string]: any }
92-
? { [K in keyof T]: Snapshot<T[K]> }
93-
: never
94-
: never;
88+
: T extends readonly unknown[]
89+
? { [K in keyof T]: Snapshot<T[K]> }
90+
: T extends Array<infer U>
91+
? Array<Snapshot<U>>
92+
: T extends object
93+
? T extends { [key: string]: any }
94+
? { [K in keyof T]: Snapshot<T[K]> }
95+
: never
96+
: never;
9597

9698
/**
9799
* Declares state that is _not_ made deeply reactive — instead of mutating it,

packages/svelte/types/index.d.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3171,13 +3171,15 @@ declare namespace $state {
31713171
? NonReactive<T>
31723172
: T extends { toJSON(): infer R }
31733173
? R
3174-
: T extends Array<infer U>
3175-
? Array<Snapshot<U>>
3176-
: T extends object
3177-
? T extends { [key: string]: any }
3178-
? { [K in keyof T]: Snapshot<T[K]> }
3179-
: never
3180-
: never;
3174+
: T extends readonly unknown[]
3175+
? { [K in keyof T]: Snapshot<T[K]> }
3176+
: T extends Array<infer U>
3177+
? Array<Snapshot<U>>
3178+
: T extends object
3179+
? T extends { [key: string]: any }
3180+
? { [K in keyof T]: Snapshot<T[K]> }
3181+
: never
3182+
: never;
31813183

31823184
/**
31833185
* Declares state that is _not_ made deeply reactive — instead of mutating it,

0 commit comments

Comments
 (0)