打字稿生成器 属性 / Getter

Typescript Generator Property / Getter

在打字稿中制作生成器方法很简单:

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

但是我想做一个生成器属性,像这样:

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

但这似乎是无效的。我似乎找不到对这个问题或解决方法的任何引用(除了明显使用 Object.defineProperty 之外,这很糟糕,因为它是无类型的)。我错过了什么吗?这受支持吗?如果不是,会是吗?

你可以用支持方法伪造它。

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 }
*/