2017-05-12 1 views
4

가 만드는 타이프의 생성 방법은 간단하다타이프 라이터 발전기 재산권/게터

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

발전기 람다 만 있다면 훨씬 좋을 것입니다. –