Generators within JavaScript (and TypeScript) are similar to C# IEnumerable’s such that you can yield a value multiple times from a generator function (in either JavaScript or TypeScript), i.e.
function* someValues() {
yield 1;
yield 2;
yield 3;
}
or within a TypeScript class we can write
export default class MyClass {
*someValues() {
yield 1;
yield 2;
yield 3;
}
}
To use the someValues function we can loop using
for(let i of someValues()) {
console.log(i);
}
Each item returned is a type of { value, done }, so for example
var values = someValues(); console.log(values.next()); console.log(values.next()); console.log(values.next()); console.log(values.next());
which would output
{ value: 1, done: false }
{ value: 2, done: false }
{ value: 3, done: false }
{ value: undefined, done: true }