type: improve typing (#177)

This commit is contained in:
扩散性百万甜面包
2019-10-10 02:01:53 +08:00
committed by Evan You
parent 8f1475b8dd
commit def27239bd
5 changed files with 9 additions and 11 deletions

View File

@@ -5,12 +5,12 @@ import { reactive } from './reactive'
export const refSymbol = Symbol(__DEV__ ? 'refSymbol' : undefined)
export interface Ref<T> {
export interface Ref<T = any> {
[refSymbol]: true
value: UnwrapNestedRefs<T>
}
export type UnwrapNestedRefs<T> = T extends Ref<any> ? T : UnwrapRef<T>
export type UnwrapNestedRefs<T> = T extends Ref ? T : UnwrapRef<T>
const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
@@ -30,7 +30,7 @@ export function ref<T>(raw: T): Ref<T> {
return v as Ref<T>
}
export function isRef(v: any): v is Ref<any> {
export function isRef(v: any): v is Ref {
return v ? v[refSymbol] === true : false
}
@@ -73,7 +73,7 @@ export type UnwrapRef<T> = {
array: T extends Array<infer V> ? Array<UnwrapRef<V>> : T
object: { [K in keyof T]: UnwrapRef<T[K]> }
stop: T
}[T extends Ref<any>
}[T extends Ref
? 'ref'
: T extends Array<any>
? 'array'