Iterators

An iterator is an object that, when asked for a value, gives a sequence of values one by one, it adheres to the following protocol:

The object must have a next() method which will return an object also has two properties:

  • value: The next value in a sequence.
  • done: A Boolean indicating if this is true, whether the process is depleted or not.

Example: In this example, a SimpleIterator class has been used here to generate a series of numbers from start to end making use of next() method, the sequence is advanced each time the next() is called until it is finished.

JavaScript
class SimpleIterator {
    private current: number;
    private end: number;

    constructor(start: number, end: number) {
        this.current = start;
        this.end = end;
    }

    public next(): IteratorResult<number> {
        if (this.current <= this.end) {
            return { value: this.current++, done: false };
        } else {
            return { value: null, done: true };
        }
    }
}

const iterator = new SimpleIterator(1, 5);

let result = iterator.next();
while (!result.done) {
    console.log(result.value);
    result = iterator.next();
}  

Output:

1
2
3
4
5

Iterators & Generators in TypeScript

Iterators and generators are powerful features in TypeScript (and JavaScript) that allow for the creation and manipulation of sequences of values in a lazy, efficient manner, in this article we shall give a detailed account of what these concepts are all about and how to implement them in TypeScript.

Similar Reads

Iterators

An iterator is an object that, when asked for a value, gives a sequence of values one by one, it adheres to the following protocol:...

Generators

Generators are a special kind of function that can stop, and then continue from where it stopped, using this kind of function you can make a function that implements an iterative algorithm only by writing just one function which doesn’t have to run its course at a go. They are defined by a function with an * in it and make use of the keyword yield in order to generate a set of numbers....

Difference between Iterator and Generator

AspectIteratorGeneratorCreationManually implemented using an object with a next method.Created by using function* and yield.StateNo intrinsic mechanism to save state between calls.Maintains its own state by allowing it to pause and resume execution.SimplicitySimpler to implement for basic use cases.More powerful and also more convenient for complex sequences and asynchronous workflows....

Conclusion

A greater part of sequences of figures can be effectively operated by TypeScript iterators and generators, when it comes to iteration, iterators only have a simple protocol as their next() method, on the other hand, generators are more superior in providing control over its execution state through yield....