Idea clave: inmutabilidad práctica, no teoría vacía
Spread/rest te ayudan a crear nuevas estructuras en vez de modificar las existentes.
En interfaces reactivas, mutar estado original suele producir comportamientos difíciles de rastrear. Crear copias controladas mejora previsibilidad.
La regla de oro: si un dato se comparte entre varias partes del sistema, evita mutarlo directamente.
Spread en arrays
Copiar/fusionar listas sin tocar fuente.
- const nuevo = [...original]
- const total = [...a, ...b]
Spread en objetos
Crear objetos nuevos con overrides claros.
- const copy = { ...obj }
- const actualizado = { ...obj, activo: true }
Rest en funciones
Agrupar argumentos variables.
- function sumar(...nums) {}
- Flexible para utilidades
Rest en destructuring
Separar una parte y conservar el resto.
- const { id, ...resto } = user
- const [primero, ...resto] = lista