}
}
+interface Iterable {
+ [Symbol.iterator](): Iterator
+}
+
+interface Iterator {
+ next(value?: any): IterationResult
+}
+
+interface IterationResult {
+ value: any
+ done: boolean
+}
+
function createIterableMethod(
method: string | symbol,
isReadonly: boolean,
shallow: boolean
) {
- return function(this: IterableCollections, ...args: unknown[]) {
+ return function(
+ this: IterableCollections,
+ ...args: unknown[]
+ ): Iterable & Iterator {
const target = toRaw(this)
const isMap = target instanceof Map
const isPair = method === 'entries' || (method === Symbol.iterator && isMap)
| CollectionTypes
| BaseTypes
| Ref
+ | Array<any>
| RefUnwrapBailTypes[keyof RefUnwrapBailTypes]
? T
- : T extends Array<any> ? T : T extends object ? UnwrappedObject<T> : T
+ : T extends object ? UnwrappedObject<T> : T
// Extract all known symbols from an object
// when unwrapping Object the symbols are not `in keyof`, this should cover all the