import { effect, ReactiveEffect, activeReactiveEffectStack } from './effect'
-import { knownValues } from './ref'
+import { UnwrapNestedRefs, knownValues } from './ref'
export interface ComputedRef<T> {
- readonly value: T
+ readonly value: UnwrapNestedRefs<T>
readonly effect: ReactiveEffect
}
export const knownValues = new WeakSet()
export interface Ref<T> {
- value: T extends Ref<infer V> ? Ref<V> : UnwrapRef<T>
+ value: UnwrapNestedRefs<T>
}
+export type UnwrapNestedRefs<T> = T extends Ref<infer V> ? Ref<V> : UnwrapRef<T>
+
const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
export function ref<T>(raw: T): Ref<T> {