File tree Expand file tree Collapse file tree 2 files changed +23
-3
lines changed
packages-private/dts-test Expand file tree Collapse file tree 2 files changed +23
-3
lines changed Original file line number Diff line number Diff line change @@ -189,6 +189,24 @@ describe('allow getter and setter types to be unrelated', <T>() => {
189189 f . value = ref ( 1 )
190190} )
191191
192+ describe ( 'correctly unwraps nested refs' , ( ) => {
193+ const obj = {
194+ n : 24 ,
195+ ref : ref ( 24 ) ,
196+ nestedRef : ref ( { n : ref ( 0 ) } ) ,
197+ }
198+
199+ const a = ref ( obj )
200+ expectType < number > ( a . value . n )
201+ expectType < number > ( a . value . ref )
202+ expectType < number > ( a . value . nestedRef . n )
203+
204+ const b = reactive ( { a } )
205+ expectType < number > ( b . a . n )
206+ expectType < number > ( b . a . ref )
207+ expectType < number > ( b . a . nestedRef . n )
208+ } )
209+
192210// computed
193211describe ( 'allow computed getter and setter types to be unrelated' , ( ) => {
194212 const obj = ref ( {
Original file line number Diff line number Diff line change @@ -62,7 +62,9 @@ export function ref(value?: unknown) {
6262
6363declare const ShallowRefMarker : unique symbol
6464
65- export type ShallowRef < T = any > = Ref < T > & { [ ShallowRefMarker ] ?: true }
65+ export type ShallowRef < T = any , S = T > = Ref < T , S > & {
66+ [ ShallowRefMarker ] ?: true
67+ }
6668
6769/**
6870 * Shallow version of {@link ref()}.
@@ -490,9 +492,9 @@ export type ShallowUnwrapRef<T> = {
490492type DistributeRef < T > = T extends Ref < infer V > ? V : T
491493
492494export type UnwrapRef < T > =
493- T extends ShallowRef < infer V >
495+ T extends ShallowRef < infer V , infer _ >
494496 ? V
495- : T extends Ref < infer V >
497+ : T extends Ref < infer V , infer _ >
496498 ? UnwrapRefSimple < V >
497499 : UnwrapRefSimple < T >
498500
You can’t perform that action at this time.
0 commit comments