microsoft / microsoft/TypeScript

Type narrowing based on iterator `done` value?

Offen
#31,952 0 Kommentare 0 Reaktionen 1 zugewiesene Person Auf GitHub ansehen

@rbuckton arbeitet bereits daran.

Seit 26.6.2019.

Needs Investigation
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

TypeScript Version: 3.4.0-dev.201xxxxx

Search Terms:

Code

interface MyIterator<T> {
    next():
      | {
          done: false;
          value: T;
        }
      | {
          done: true;
          value: undefined;
        };
    [Symbol.iterator](): MyIterator<T>;
}

interface Item { name: string }

function m(iter: MyIterator<Item>) {
    for (const it of iter) {
        console.log(it.name);           // Error here complaining about 'it': Object is possibly 'undefined'.ts(2532)
    }
}

Expected behavior:

Actual behavior:

Playground Link:
https://typescript-play.js.org/?downlevelIteration=true#code/JYOwLgpgTgZghgYwgAgLIE8CSkpzAeygB4AVAPmQG8AoZO5ECADzAAoBKALlvroB8qPXrwAm+Rp2TwANgGcIAbiHC6ANzjSArhEkklKugF9l-QQfpiJyMFG37zydVp3JNIERBigII+yuO8fsgA2gDK6AC2AEb40gB0wDh4hAC6HJIY2NDJxORKxtSgOPBIyFkRVAxwES6yNqAA5sgFMG4IYMDiyBGsidAZWEkExOVk7Gb0MITIrAjidciJyPgwizjjNOZzILKxEHHS+A29YHEg1RDsCg50APS3yACiUFDTABbQKHMRAA7ScKBGsg4DFNGBkAByRIQyQAeSiACsIO1FrJkD98LJZMAotJ0JC3B4vIwRBC4mBZKwAEwAVgAzFT2NRlMZDEA

Related Issues:
https://github.com/microsoft/TypeScript/issues/11450 seems related. but here even with --strictNullChecks same error is reported here.

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.

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

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