wip: improve ref typing
This commit is contained in:
parent
caba6d5c9e
commit
96d65e1ab5
@ -61,4 +61,14 @@ describe('observer/value', () => {
|
|||||||
expect(dummy2).toBe(3)
|
expect(dummy2).toBe(3)
|
||||||
expect(dummy3).toBe(3)
|
expect(dummy3).toBe(3)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('should unwrap nested values in types', () => {
|
||||||
|
const a = {
|
||||||
|
b: ref(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const c = ref(a)
|
||||||
|
|
||||||
|
expect(typeof (c.value.b + 1)).toBe('number')
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
@ -6,7 +6,7 @@ import { reactive } from './reactive'
|
|||||||
export const knownValues = new WeakSet()
|
export const knownValues = new WeakSet()
|
||||||
|
|
||||||
export interface Ref<T> {
|
export interface Ref<T> {
|
||||||
value: T
|
value: T extends Ref<infer V> ? Ref<V> : UnwrapRef<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
|
const convert = (val: any): any => (isObject(val) ? reactive(val) : val)
|
||||||
@ -24,7 +24,7 @@ export function ref<T>(raw: T): Ref<T> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
knownValues.add(v)
|
knownValues.add(v)
|
||||||
return v
|
return v as any
|
||||||
}
|
}
|
||||||
|
|
||||||
export function isRef(v: any): v is Ref<any> {
|
export function isRef(v: any): v is Ref<any> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user