Este TypeError se lanza cuando el operador spread (...) se usa en un valor que no implementa el protocolo iterable. Los arrays, cadenas, Sets y Maps son iterables; los objetos planos, null, undefined y los números no lo son.
Por qué ocurre
- •Aplicar spread a null o undefined en un literal de array.
- •Aplicar spread a un objeto plano ({}) en un contexto de array (solo funciona en spread de objeto).
- •Aplicar spread a un valor de una API que devolvió null en lugar de un array.
- •Intentar aplicar spread a un número o valor booleano.
Ejemplos
Código que causa el error
const a = [1, 2];
const b = null;
const merged = [...a, ...b];Error en la terminal
TypeError: b is not iterable
Cómo solucionarlo
Protege el valor antes del spread con un fallback: [...(value ?? [])]. Verifica que las respuestas de API que deberían ser arrays lo sean realmente. Usa Array.isArray() para validar antes del spread. Recuerda: el spread de objeto ({...obj}) y el spread de array ([...arr]) tienen requisitos diferentes.
Código corregido
const a = [1, 2];
const b = null;
const merged = [...a, ...(b ?? [])];
console.log(merged); // [1, 2]Errores relacionados
¿Listo para practicar tu inglés en el trabajo?
Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.
Prueba Lingua-e gratis