Lingua-e
JavaScript

¿Qué significa Spread sobre valor no iterable?

← Errores

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

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