简体   繁体   English

打字稿生成器属性/获取者

[英]Typescript Generator Property / Getter

Making a generator method in typescript is simple: 在typescript中创建一个生成器方法很简单:

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

But I want to make a generator property , something like this: 但我想创建一个生成器属性 ,如下所示:

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

But that seems to be invalid. 但这似乎无效。 I can't seem to find any references to this question or workarounds (aside from the obvious of using Object.defineProperty explicitly, which would suck because it would be untyped). 我似乎无法找到任何对这个问题或变通方法的引用(除了显而易见的明显使用Object.defineProperty,这会很糟糕,因为它将是无类型的)。 Am I missing something? 我错过了什么吗? Is this supported? 这支持吗? If not, will it be? 如果没有,会是吗?

You could fake it with a backing 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 }
*/

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM