microsoft / microsoft/TypeScript
Type definition for what `for await` takes
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 2 T. 4 Std.
- Gemergte PRs (30 T.)
- 132
Beschreibung
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:
- This wouldn't be a breaking change in existing TypeScript/JavaScript code
- This wouldn't change the runtime behavior of existing JavaScript code
- This could be implemented without emitting different JS based on the types of the expressions
- This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, etc.)
- This feature would agree with the rest of TypeScript's Design Goals.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginne mit der Überprüfung der vorgeschlagenen ForAwaitable-Aliase und des Anwendungsfalls für die Akzeptanz von Iterable- und AsyncIterable-Werten. Prüfe die verknüpfte Spezifikation für asynchrone Iteration, insbesondere CreateAsyncFromSyncIterator und die Priorität zwischen Symbol.asyncIterator und Symbol.iterator. Als abgeschlossen gilt die Arbeit, wenn ein abgestimmtes Design für Typ-Aliase erreicht ist, das for-await-Eingaben korrekt modelliert, ohne das erzeugte JavaScript zu ändern.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100