return Boolean(r && r.__v_isRef === true)
}
-export function ref<T extends object>(value: T): ToRef<T>
+export function ref<T extends object>(
+ value: T
+): [T] extends [Ref] ? T : Ref<UnwrapRef<T>>
export function ref<T>(value: T): Ref<UnwrapRef<T>>
export function ref<T = any>(): Ref<T | undefined>
export function ref(value?: unknown) {
}
}
-export type ToRef<T> = [T] extends [Ref] ? T : Ref<UnwrapRef<T>>
+export type ToRef<T> = [T] extends [Ref] ? T : Ref<T>
export function toRef<T extends object, K extends keyof T>(
object: T,
key: K
toRef,
toRefs,
ToRefs,
+ shallowReactive,
watch
} from './index'
}
testUnrefGenerics(1)
+
+// #4732
+const baz = shallowReactive({
+ foo: {
+ bar: ref(42)
+ }
+})
+
+const foo = toRef(baz, 'foo')
+
+expectType<Ref<number>>(foo.value.bar)
+expectType<number>(foo.value.bar.value)