TypeScript: Generatoren (Generators)

Generatoren sind Funktionen, die verlassen und später wieder betreten werden können. Ihr Kontext (Variablenbindung) bleibt über die Wiedereintritte hinweg erhalten.

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Statements/function*#Beschreibung
function* amountOfRandomNumbers(count: number) {
    for (let i = 0; i < count; i++) {
        yield Math.random();
    }
}

for (let randomNumber of amountOfRandomNumbers(7)) {
    console.log(`Random Number: ${randomNumber.toFixed(2)}`);
}

Diese Generatoren Funktion gibt sieben zufällige Zahlen aus, welche mit Math.random erzeugt werden.

Generatoren können mit einer for … of Schleife iteriert werden. Was im Grunde genommen, folgenden Aufrufen gleicht:

let iterator = amountOfRandomNumbers(7);
let randomNumber;

randomNumber = iterator.next().value;
randomNumber = iterator.next().value;
randomNumber = iterator.next().value;
// ... usw.

Der Aufruf .next() enthält auch Informationen darüber ob wir das Ende des Iterators erreicht haben. Dies möchte ich euch an folgendem Beispiel zeigen:

let iterator = amountOfRandomNumbers(1);
console.log(iterator.next());
console.log(iterator.next());

/*
  Ausgabe:
   [LOG]: { "value": 0.31090493471228164, "done": false } 
   [LOG]: { "done": true } 
*/

D.h. wir bekommen immer wenn wir .next() aufrufen ein Objekt zurück, welches ein value sowie done Schlüssel beinhaltet. Anhand dessen, können wir prüfen ob wir bereits am Ende angekommen sind.

290cookie-checkTypeScript: Generatoren (Generators)

Kommentar verfassen