return r ? r._isRef === true : false
}
-export function ref<T>(value: T): T extends Ref ? T : Ref<UnwrapRef<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) {
return createRef(value)
expectType<Ref<{ foo: number }>>(nestedRef)
expectType<{ foo: number }>(nestedRef.value)
+ // ref boolean
+ const falseRef = ref(false)
+ expectType<Ref<boolean>>(falseRef)
+ expectType<boolean>(falseRef.value)
+
+ // ref true
+ const trueRef = ref<true>(true)
+ expectType<Ref<true>>(trueRef)
+ expectType<true>(trueRef.value)
+
// tuple
expectType<[number, string]>(unref(ref([1, '1'])))