From a6e62533195e8202cc176009b7e74c8910de2c6f Mon Sep 17 00:00:00 2001 From: zhangenming <282126346@qq.com> Date: Thu, 2 Sep 2021 04:49:12 +0800 Subject: [PATCH] types(reactivity): adjust type exports (#4407) --- packages/reactivity/src/index.ts | 4 +++- packages/reactivity/src/ref.ts | 17 ++++++++--------- packages/runtime-core/src/index.ts | 5 +++-- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/reactivity/src/index.ts b/packages/reactivity/src/index.ts index d26e87de9a..b15f4d807b 100644 --- a/packages/reactivity/src/index.ts +++ b/packages/reactivity/src/index.ts @@ -9,6 +9,7 @@ export { customRef, triggerRef, Ref, + ToRef, ToRefs, UnwrapRef, ShallowUnwrapRef, @@ -51,7 +52,8 @@ export { ReactiveEffectOptions, EffectScheduler, DebuggerOptions, - DebuggerEvent + DebuggerEvent, + DebuggerEventExtraInfo } from './effect' export { effectScope, diff --git a/packages/reactivity/src/ref.ts b/packages/reactivity/src/ref.ts index 11bc4d3529..382afaa801 100644 --- a/packages/reactivity/src/ref.ts +++ b/packages/reactivity/src/ref.ts @@ -5,7 +5,7 @@ import { reactive, isProxy, toRaw, isReactive } from './reactive' import { CollectionTypes } from './collectionHandlers' import { createDep, Dep } from './dep' -export declare const RefSymbol: unique symbol +declare const RefSymbol: unique symbol export interface Ref { value: T @@ -60,13 +60,6 @@ export function triggerRefValue(ref: RefBase, newVal?: any) { } } -export type ToRef = [T] extends [Ref] ? T : Ref> -export type ToRefs = { - // #2687: somehow using ToRef here turns the resulting type into - // a union of multiple Ref<*> types instead of a single Ref<* | *> type. - [K in keyof T]: T[K] extends Ref ? T[K] : Ref> -} - const convert = (val: T): T => isObject(val) ? reactive(val) : val @@ -154,7 +147,7 @@ export function proxyRefs( : new Proxy(objectWithRefs, shallowUnwrapHandlers) } -export type CustomRefFactory = ( +type CustomRefFactory = ( track: () => void, trigger: () => void ) => { @@ -192,6 +185,11 @@ export function customRef(factory: CustomRefFactory): Ref { return new CustomRefImpl(factory) as any } +export type ToRefs = { + // #2687: somehow using ToRef here turns the resulting type into + // a union of multiple Ref<*> types instead of a single Ref<* | *> type. + [K in keyof T]: T[K] extends Ref ? T[K] : Ref> +} export function toRefs(object: T): ToRefs { if (__DEV__ && !isProxy(object)) { console.warn(`toRefs() expects a reactive object but received a plain one.`) @@ -217,6 +215,7 @@ class ObjectRefImpl { } } +export type ToRef = [T] extends [Ref] ? T : Ref> export function toRef( object: T, key: K diff --git a/packages/runtime-core/src/index.ts b/packages/runtime-core/src/index.ts index 0ba1d9c2fa..b182f7e747 100644 --- a/packages/runtime-core/src/index.ts +++ b/packages/runtime-core/src/index.ts @@ -147,18 +147,19 @@ declare module '@vue/reactivity' { } export { + Ref, + ToRef, + ToRefs, ReactiveEffectOptions, DebuggerEvent, DebuggerOptions, TrackOpTypes, TriggerOpTypes, - Ref, ComputedRef, WritableComputedRef, UnwrapRef, ShallowUnwrapRef, WritableComputedOptions, - ToRefs, DeepReadonly } from '@vue/reactivity' export { -- 2.47.3