expectType<number>(wm2.get({})!.wrap)
})
+describe('should unwrap extended Map correctly', () => {
+ class ExtendendMap1 extends Map<string, { wrap: Ref<number> }> {
+ foo = ref('foo')
+ bar = 1
+ }
+
+ const emap1 = reactive(new ExtendendMap1())
+ expectType<string>(emap1.foo)
+ expectType<number>(emap1.bar)
+ expectType<number>(emap1.get('a')!.wrap)
+})
+
describe('should unwrap Set correctly', () => {
const set = reactive(new Set<Ref<number>>())
expectType<Set<Ref<number>>>(set)
const ws2 = reactive(new WeakSet<{ wrap: Ref<number> }>())
expectType<WeakSet<{ wrap: number }>>(ws2)
})
+
+describe('should unwrap extended Set correctly', () => {
+ class ExtendendSet1 extends Set<{ wrap: Ref<number> }> {
+ foo = ref('foo')
+ bar = 1
+ }
+
+ const eset1 = reactive(new ExtendendSet1())
+ expectType<string>(eset1.foo)
+ expectType<number>(eset1.bar)
+})
| { [RawSymbol]?: true }
? T
: T extends Map<infer K, infer V>
- ? Map<K, UnwrapRefSimple<V>>
+ ? Map<K, UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Map<any, any>>>
: T extends WeakMap<infer K, infer V>
- ? WeakMap<K, UnwrapRefSimple<V>>
+ ? WeakMap<K, UnwrapRefSimple<V>> &
+ UnwrapRef<Omit<T, keyof WeakMap<any, any>>>
: T extends Set<infer V>
- ? Set<UnwrapRefSimple<V>>
+ ? Set<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof Set<any>>>
: T extends WeakSet<infer V>
- ? WeakSet<UnwrapRefSimple<V>>
+ ? WeakSet<UnwrapRefSimple<V>> & UnwrapRef<Omit<T, keyof WeakSet<any>>>
: T extends ReadonlyArray<any>
? { [K in keyof T]: UnwrapRefSimple<T[K]> }
: T extends object & { [ShallowReactiveMarker]?: never }