fix(types/ref): correct type inference for nested refs (#11536)
close #11532 close #11537
This commit is contained in:
parent
139548e0e0
commit
536f62332c
|
@ -180,6 +180,11 @@ describe('allow getter and setter types to be unrelated', <T>() => {
|
||||||
const d = {} as T
|
const d = {} as T
|
||||||
const e = ref(d)
|
const e = ref(d)
|
||||||
e.value = d
|
e.value = d
|
||||||
|
|
||||||
|
const f = ref(ref(0))
|
||||||
|
expectType<number>(f.value)
|
||||||
|
// @ts-expect-error
|
||||||
|
f.value = ref(1)
|
||||||
})
|
})
|
||||||
|
|
||||||
// shallowRef
|
// shallowRef
|
||||||
|
|
|
@ -109,7 +109,9 @@ export function isRef(r: any): r is Ref {
|
||||||
* @param value - The object to wrap in the ref.
|
* @param value - The object to wrap in the ref.
|
||||||
* @see {@link https://vuejs.org/api/reactivity-core.html#ref}
|
* @see {@link https://vuejs.org/api/reactivity-core.html#ref}
|
||||||
*/
|
*/
|
||||||
export function ref<T>(value: T): Ref<UnwrapRef<T>, UnwrapRef<T> | T>
|
export function ref<T>(
|
||||||
|
value: T,
|
||||||
|
): [T] extends [Ref] ? IfAny<T, Ref<T>, T> : Ref<UnwrapRef<T>, UnwrapRef<T> | T>
|
||||||
export function ref<T = any>(): Ref<T | undefined>
|
export function ref<T = any>(): Ref<T | undefined>
|
||||||
export function ref(value?: unknown) {
|
export function ref(value?: unknown) {
|
||||||
return createRef(value, false)
|
return createRef(value, false)
|
||||||
|
|
Loading…
Reference in New Issue