types: bring back my changes
This commit is contained in:
parent
5ae74144f2
commit
ab9add4f78
@ -103,16 +103,27 @@ function toProxyRef<T extends object, K extends keyof T>(
|
|||||||
// RelativePath extends object -> true
|
// RelativePath extends object -> true
|
||||||
type BaseTypes = string | number | boolean
|
type BaseTypes = string | number | boolean
|
||||||
|
|
||||||
// Recursively unwraps nested value bindings.
|
// Super simple tuple checker
|
||||||
export type UnwrapRef<T> = {
|
type Tupple<T extends Array<any>> = T[0] extends T[1]
|
||||||
cRef: T extends ComputedRef<infer V> ? UnwrapRef<V> : T
|
? T[1] extends T[2] ? never : true
|
||||||
ref: T extends Ref<infer V> ? UnwrapRef<V> : T
|
: true
|
||||||
array: T
|
|
||||||
object: { [K in keyof T]: UnwrapRef<T[K]> }
|
export type UnwrapRef<T> = T extends ComputedRef<infer V>
|
||||||
}[T extends ComputedRef<any>
|
? UnwrapRefSimple<V>
|
||||||
? 'cRef'
|
: T extends Ref<infer V> ? UnwrapRefSimple<V> : UnwrapRefSimple<T>
|
||||||
: T extends Array<any>
|
|
||||||
? 'array'
|
type UnwrapRefSimple<T> = T extends Function | CollectionTypes | BaseTypes | Ref
|
||||||
: T extends Ref | Function | CollectionTypes | BaseTypes
|
? T
|
||||||
? 'ref' // bail out on types that shouldn't be unwrapped
|
: T extends Array<infer V>
|
||||||
: T extends object ? 'object' : 'ref']
|
? Tupple<T> extends never ? Array<V> : UnwrapTupple<T>
|
||||||
|
: T extends object ? UnwrappedObject<T> : T
|
||||||
|
|
||||||
|
export type UnwrapTupple<T> = { [P in keyof T]: T[P] } & {
|
||||||
|
length: number
|
||||||
|
[Symbol.iterator]: any
|
||||||
|
[Symbol.unscopables]: any
|
||||||
|
}
|
||||||
|
|
||||||
|
// interface UnwrappedArray<T> extends Array<T> {}
|
||||||
|
|
||||||
|
type UnwrappedObject<T> = { [P in keyof T]: UnwrapRef<T[P]> }
|
||||||
|
@ -4,7 +4,6 @@ import {
|
|||||||
h,
|
h,
|
||||||
render,
|
render,
|
||||||
nextTick,
|
nextTick,
|
||||||
Ref,
|
|
||||||
defineComponent,
|
defineComponent,
|
||||||
reactive
|
reactive
|
||||||
} from '@vue/runtime-test'
|
} from '@vue/runtime-test'
|
||||||
|
Loading…
x
Reference in New Issue
Block a user