Typescript Generator Property / Getter

Creating a generator method in typescript is simple:

class Foo {
    *values() { yield 10 }
}

But I want to create a generator property, something like this:

class Foo {
    get *values() { yield 10 }
}

But that seems invalid. It seems I can not find references to this question or workarounds (besides the obvious use of Object.defineProperty it is obvious that it will suck because it will be untyped). Am I missing something? Is it supported? If not, will it be?

+4
source share
1 answer

You can fake it using the support method.

class Gen {
    private *_values() {
        yield 3;
        yield 4;
    }

    public get values() {
        return this._values();
    }
}

let g = new Gen();

let v1 = g.values;
let v2 = g.values;

console.log(v1.next());
console.log(v1.next());
console.log(v1.next());
console.log(v2.next());
console.log(v2.next());
console.log(v2.next());

/* stdout
{ value: 3, done: false }
{ value: 4, done: false }
{ value: undefined, done: true }
{ value: 3, done: false }
{ value: 4, done: false }
{ value: undefined, done: true }
*/
+3
source

Source: https://habr.com/ru/post/1677034/


All Articles