typescript:使类对象可迭代

时间:2016-07-21 15:20:45

标签: typescript

如何使Typescript对象可迭代? 在Python 3中,我可以做到

class EndlessCounter:
    def __init__(self):
        self.count = 0

    def __iter__(self):
        return self

    def __next__(self):
        self.count += 1
        return self.count

但是这段代码的Typescript等价物是什么?

谢谢!

1 个答案:

答案 0 :(得分:10)

Javascript支持Iterators and generators,打字稿不会增加太多内容:typescript Iterators and Generators

您的代码可以在javascript中完成:

if x > 3: 
    y = x + 2

修改

你可以对一个班级做同样的事情:

function* generator() {
    let counter = 0;
    while (true) {
        yield counter++;
    }
}

var iterator = generator();
console.log(iterator.next().value); // 0
console.log(iterator.next().value); // 1
console.log(iterator.next().value); // 2

第二次编辑

使用生成器的第一个解决方案适用于for / of循环:

class Counter implements Iterator<number> {
    private counter = 0;

    public next(): IteratorResult<number> {
        return {
            done: false,
            value: this.counter++
        }
    }
}

let c = new Counter();
console.log(c.next().value); // 0
console.log(c.next().value); // 1
console.log(c.next().value); // 2

但要使用您需要执行的实例打印0到5:

function* generator() {
    let counter = 0;
    while (counter < 5) {
        yield counter++;
    }
}
for (let i of generator()) console.log(i);