Type Parameters
-
Iterable2Item = unknown
-
Iterable1Item = unknown
-
Output = unknown
Parameters
-
iterator: Unary<Iterable<Iterable2Item>, Unary<Iterable<Iterable1Item>, Function<ReadOnlyArray<never>, Generator<Output, void, void>>>>
Returns ((asyncIterator) => (<Iterable2>(iterable2) => (<Iterable1>(iterable1) => Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
})))
Curried function with iterator in context.
-
- (asyncIterator): (<Iterable2>(iterable2) => (<Iterable1>(iterable1) => Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
}))
-
Parameters
-
asyncIterator: Unary<IsomorphicIterable<Iterable2Item>, Unary<IsomorphicIterable<Iterable1Item>, Function<ReadOnlyArray<never>, AsyncGenerator<Output, void, void>>>>
Returns (<Iterable2>(iterable2) => (<Iterable1>(iterable1) => Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
}))
-
- <Iterable2>(iterable2): (<Iterable1>(iterable1) => Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
})
-
Type Parameters
-
Iterable2 extends IsomorphicIterable<Iterable2Item>
Returns (<Iterable1>(iterable1) => Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
})
-
- <Iterable1>(iterable1): Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
}
-
Type Parameters
-
Iterable1 extends IsomorphicIterable<Iterable1Item>
Returns Iterable2 extends {
[asyncIterator]() => AsyncIterator<Iterable2Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: Iterable1 extends {
[asyncIterator]() => AsyncIterator<Iterable1Item, any, undefined>;
}
? {
[asyncIterator]() => AsyncIterableIterator<Output>;
next(...args) => Promise<IteratorResult<Output, any>>;
return?(value?) => Promise<IteratorResult<Output, any>>;
throw?(e?) => Promise<IteratorResult<Output, any>>;
}
: {
[iterator]() => IterableIterator<Output>;
next(...args) => IteratorResult<Output, any>;
return?(value?) => IteratorResult<Output, any>;
throw?(e?) => IteratorResult<Output, any>;
}
Takes a generator for iterables, then a generator for async iterables and last 2 iterables, using the proper generator automatically.
Example