Qué significa Spread sobre valor no iterable y cómo solucionarlo
Referencia del error
Spread sobre valor no iterable
Lenguaje
Severidad
MediaCuándo ocurre
Este TypeError se lanza cuando el operador spread (...) se usa en un valor que no implementa el protocolo iterable.
Posibles soluciones
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.
Errores relacionados
Más detalles
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.
Posibles soluciones
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.
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ódigo corregido
const a = [1, 2];
const b = null;
const merged = [...a, ...(b ?? [])];
console.log(merged); // [1, 2]Practica en inglés
¿Cómo le explicarías un Spread Non-Iterable a un compañero dev? Elige la frase correcta:
"I hit an error...
¿Programando en inglés?
Para arreglar esto, leíste inglés técnico real. Lingua-e tiene ejercicios gratis hechos igual: dailys, code reviews y situaciones reales de trabajo.
Practicar inglés para developers gratis