microsoft / microsoft/TypeScript

Iterator Helpers: `return` method typing is weaker than ideal

Offen
#60,176 0 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
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

Playground

Documentation Link

https://tc39.es/proposal-iterator-helpers/

Spec states that below objects always have the return method:

  • %WrapForValidIteratorPrototype%
  • %IteratorHelperPrototype%

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Ö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

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.