how make typescript objects iterable? in python 3 can do
class endlesscounter: def __init__(self): self.count = 0 def __iter__(self): return self def __next__(self): self.count += 1 return self.count
but typescript equivalent of code?
thanks!
javascript supports iterators , generators, typescript doesn't add it: typescript iterators , generators.
your code can done in javascript:
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
edit
you can same class:
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
2nd edit
the first solution generator works for/of loop:
function* generator() { let counter = 0; while (counter < 5) { yield counter++; } } (let of generator()) console.log(i);
prints 0 5, however, instance you'll need do:
class counter implements iterable<number> { private counter = 0; public [symbol.iterator]() { return { next: function() { return { done: this.counter === 5, value: this.counter++ } }.bind(this) } } } let c = new counter(); (let of c) console.log(i);
Comments
Post a Comment