Volver a Asincronía
Ir al examen del modulo
Asincronía — Leccion 5
·15 minIteradores e Iterables
Implementa el protocolo de iteración en tus objetos.
Protocolo de Iteración
any objeto con [Symbol.iterator] es iterable.
typescript
class Rango {
constructor(private inicio: number, private fin: number) {}
[Symbol.iterator]() {
let actual = this.inicio;
const fin = this.fin;
return {
next() {
if (actual <= fin) {
return { value: actual++, done: false };
}
return { done: true };
}
};
}
}
const rango = new Rango(1, 5);
for (const num of rango) {
console.log(num); // 1, 2, 3, 4, 5
}
Spread con iterables
typescript
const numeros = [...new Rango(1, 5)]; // [1, 2, 3, 4, 5]
Generator cómo iterable
typescript
function* rango(inicio: number, fin: number) {
for (let i = inicio; i <= fin; i++) {
yield i;
}
}
for (const num of rango(1, 5)) {
console.log(num);
}
Custom iterator con Clase
typescript
class Coleccion<T> {
private items: T[] = [];
agregar(item: T) {
this.items.push(item);
}
[Symbol.iterator]() {
let index = 0;
const items = this.items;
return {
next() {
if (index < items.length) {
return { value: items[index++], done: false };
}
return { done: true };
}
};
}
}
Ejercicio pratico
Crea una clase iterable que genere los numeros pares del 0 al 10.
exercise.ts
Loading...
Resultado
Haz clic en "Ejecutar" para ver el resultado...