2017-05-12 36 views
4

制作的打字稿发电机的方法很简单:打字稿发电机房产/消气

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

但我想使发电机财产,这样的事情:

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

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

回答

3

你可以用后盾方法伪装它。

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

如果只有发生器lambdas,这将是非常好。 –