打字稿生成器 属性 / 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 }
*/
在打字稿中制作生成器方法很简单:
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 }
*/