typescript: make class objects iterable -


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