如何使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等价物是什么?
谢谢!
答案 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);