Lingua-e
← Errores
JavaScript

Qué significa Spread sobre valor no iterable y cómo solucionarlo

Referencia del error

Spread sobre valor no iterable

Lenguaje

JavaScript

Severidad

Media

Cuá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.

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

JavaScript

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...

¿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