types(reactivity): Simplify the SymbolExtract (#4162)
This commit is contained in:
@@ -274,36 +274,7 @@ type UnwrapRefSimple<T> = T extends
|
||||
: T extends Array<any>
|
||||
? { [K in keyof T]: UnwrapRefSimple<T[K]> }
|
||||
: T extends object
|
||||
? UnwrappedObject<T>
|
||||
? {
|
||||
[P in keyof T]: P extends symbol ? T[P] : UnwrapRef<T[P]>
|
||||
}
|
||||
: T
|
||||
|
||||
// Extract all known symbols from an object
|
||||
// when unwrapping Object the symbols are not `in keyof`, this should cover all the
|
||||
// known symbols
|
||||
type SymbolExtract<T> = (T extends { [Symbol.asyncIterator]: infer V }
|
||||
? { [Symbol.asyncIterator]: V }
|
||||
: {}) &
|
||||
(T extends { [Symbol.hasInstance]: infer V }
|
||||
? { [Symbol.hasInstance]: V }
|
||||
: {}) &
|
||||
(T extends { [Symbol.isConcatSpreadable]: infer V }
|
||||
? { [Symbol.isConcatSpreadable]: V }
|
||||
: {}) &
|
||||
(T extends { [Symbol.iterator]: infer V } ? { [Symbol.iterator]: V } : {}) &
|
||||
(T extends { [Symbol.match]: infer V } ? { [Symbol.match]: V } : {}) &
|
||||
(T extends { [Symbol.matchAll]: infer V } ? { [Symbol.matchAll]: V } : {}) &
|
||||
(T extends { [Symbol.replace]: infer V } ? { [Symbol.replace]: V } : {}) &
|
||||
(T extends { [Symbol.search]: infer V } ? { [Symbol.search]: V } : {}) &
|
||||
(T extends { [Symbol.species]: infer V } ? { [Symbol.species]: V } : {}) &
|
||||
(T extends { [Symbol.split]: infer V } ? { [Symbol.split]: V } : {}) &
|
||||
(T extends { [Symbol.toPrimitive]: infer V }
|
||||
? { [Symbol.toPrimitive]: V }
|
||||
: {}) &
|
||||
(T extends { [Symbol.toStringTag]: infer V }
|
||||
? { [Symbol.toStringTag]: V }
|
||||
: {}) &
|
||||
(T extends { [Symbol.unscopables]: infer V }
|
||||
? { [Symbol.unscopables]: V }
|
||||
: {})
|
||||
|
||||
type UnwrappedObject<T> = { [P in keyof T]: UnwrapRef<T[P]> } & SymbolExtract<T>
|
||||
|
||||
Reference in New Issue
Block a user