I haven't found this request on the current issues so I'm opening one.
Search Terms
"for await" asynchronous generators
Suggestion
If for await can take both an Iterable and an AsyncIterable then I'd like a type alias
type ForAwaitable<T> = Iterable<T> | AsyncIterable<T>;
// or maybe ForAwaitable<T, U = T> = Iterable<T> | AsyncIterable<U>;
Better names are welcome.
Use Cases
type ForAwaitable<T> = Iterable<T> | AsyncIterable<T>;
async function foo(chunks: ForAwaitable<Buffer>): Promise<void> {
for await (const chunk of chunks) {
// ...
}
}
await foo(someReadableStream);
await foo(inMemoryBufferArray);
Looking at https://tc39.es/proposal-async-iteration/#sec-createasyncfromsynciterator and after a test, if an object has both fields Symbol.asyncIterator and Symbol.iterator then the former takes precedence, but that use case should rarely happen.
Checklist
My suggestion meets these guidelines:
I haven't found this request on the current issues so I'm opening one.
Search Terms
"for await" asynchronous generators
Suggestion
If
for awaitcan take both anIterableand anAsyncIterablethen I'd like a type aliasBetter names are welcome.
Use Cases
Looking at https://tc39.es/proposal-async-iteration/#sec-createasyncfromsynciterator and after a test, if an object has both fields
Symbol.asyncIteratorandSymbol.iteratorthen the former takes precedence, but that use case should rarely happen.Checklist
My suggestion meets these guidelines: