diff --git a/packages/dts-test/ref.test-d.ts b/packages/dts-test/ref.test-d.ts index 5d4c9d95dab..1456c523239 100644 --- a/packages/dts-test/ref.test-d.ts +++ b/packages/dts-test/ref.test-d.ts @@ -452,3 +452,7 @@ describe('toRef <-> toValue', () => { ), ) }) + +// unref +declare const text: ShallowRef | ComputedRef | MaybeRef +expectType(unref(text)) diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index e47b8aa5582..3e9b05062f3 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -235,7 +235,7 @@ export type MaybeRefOrGetter = MaybeRef | (() => T) * @param ref - Ref or plain value to be converted into the plain value. * @see {@link https://vuejs.org/api/reactivity-utilities.html#unref} */ -export function unref(ref: MaybeRef | ComputedRef): T { +export function unref(ref: MaybeRef | ComputedRef | ShallowRef): T { return isRef(ref) ? ref.value : ref } @@ -255,7 +255,9 @@ export function unref(ref: MaybeRef | ComputedRef): T { * @param source - A getter, an existing ref, or a non-function value. * @see {@link https://vuejs.org/api/reactivity-utilities.html#tovalue} */ -export function toValue(source: MaybeRefOrGetter | ComputedRef): T { +export function toValue( + source: MaybeRefOrGetter | ComputedRef | ShallowRef, +): T { return isFunction(source) ? source() : unref(source) }