Typescript: Iteradores

En materia de desarrollo de software un iterador (iterator) es el objeto que permite a un programa recorrer un contenedor (una colección de elementos), especialmente listas.

Normalmente el contenedor a través de su interfaz expone la semántica necesaria para hacerlo. El primer lenguaje de programación en utilizar los iteradores fue CLU, en 1974. A día de hoy es una técnica muy utilizada y está presente también en Typescript desde el lanzamiento de ES6.

En Typescript expone tres métodos:
* next: Para pasar al siguiente dato.
* return: Para devolver el dato.
* throw: Para devolver un error.

El iterador siempre funciona de manera síncrona.

Os pongo un ejemplo de como utilizarlo. Creamos primero la función para utilizar la iteración:

function makeRangeIterator(start = 0, end = Infinity, step = 1) {
    let nextIndex = start;
    let iterationCount = 0;

    const rangeIterator = {
       next: function() {
           let result;
           if (nextIndex < end) {
               result = { value: nextIndex, done: false }
               nextIndex += step;
               iterationCount++;
               return result;
           }
           return { value: iterationCount, done: true }
       }
    };
    return rangeIterator;
}

Y aquí como utilizarlo en nuestro proyecto:

const it = makeRangeIterator(1, 10, 2);

let result = it.next();
while (!result.done) {
 console.log(result.value); // 1 3 5 7 9
 result = it.next();
}

console.log("Iteración sobre secuencia: ", result.value); // [5 numbers devueltos que tomaron el intervalo entre: 0 a 10]

Espero que os sea de utilidad ^_^.

Comentarios