microsoft / microsoft/TypeScript
Iterator Helpers: `return` method typing is weaker than ideal
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.3k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
⚙ Compilation target
ESNext
⚙ Library
esnext.iterator.d.ts
Missing / Incorrect Definition
The return method always exists on iterators returned by Iterator.from (iter in below code) and iterators returned by Iterator Helpers methods (iter2 in below code).
However, it is defined as optional in the current definition. This could be improved.
Please note that you can't just add a non-optional return method definition to the IteratorObject type -- iterators returned by builtin methods other than Iterator Helpers don't have that method (iter3).
P.S. if you are interested in a motivating example, I don't have one. Sorry 🤪
Sample Code
const iter = Iterator.from({ next() { return { done: false, value: 0 }} });
iter.return(); // should not error
const iter2 = iter.map(x => x);
iter2.return(); // should not error
const iter3 = [].values();
iter3.return(); // Note: this error IS correct
Documentation Link
https://tc39.es/proposal-iterator-helpers/
Spec states that below objects always have the return method:
- %WrapForValidIteratorPrototype%
- %IteratorHelperPrototype%
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 in esnext.iterator.d.ts und prüfe die Definitionen von IteratorObject, Iterator.from und Iterator Helpers anhand des Beispielcodes. Überprüfe das erwartete Verhalten anhand der verlinkten Iterator Helpers-Spezifikation: Iterator.from und die Ergebnisse der Helper sollten return() erlauben, während [].values() es weiterhin ablehnen sollte. Als erledigt gilt die Aufgabe, wenn die Deklarationen diese Fälle unterscheiden, ohne einen Fehler für iter3 einzuführen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- javascript, typescript
- Bereich
- compilers
- Issue-Typ
- Bug
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 58/100