Capítulo 11: Manipulación Segura de Datos
Este capítulo aborda patrones para trabajar con datos de forma segura, evitando mutaciones accidentales y errores.
11.1. Inmutabilidad: Por qué es Importante ?
// Problema: mutación accidental
let original = { nombre: "Juan", edad: 30 };
let copia = original;
copia.edad = 31;
console.log(original.edad); // 31 (¡cambió el original!)
// Solución: copias inmutables
let copia2 = { ...original };
copia2.edad = 32;
console.log(original.edad); // 30 (sin cambios)11.2. Copias Profundas (Deep Copy) vs Superficiales
// Copia superficial (spread, Object.assign)
let obj1 = { usuario: { nombre: "Juan" } };
let obj2 = { ...obj1 };
obj2.usuario.nombre = "María";
console.log(obj1.usuario.nombre); // "María" (¡mutó!)
// Copia profunda con JSON
let obj3 = JSON.parse(JSON.stringify(obj1));
obj3.usuario.nombre = "Carlos";
console.log(obj1.usuario.nombre); // "María" (sin cambios)
// Copia profunda recursiva
function copiasProfunda(obj) {
if (obj === null || typeof obj !== "object") return obj;
if (Array.isArray(obj)) return obj.map(copiasProfunda);
let copia = {};
for (let clave in obj) {
copia[clave] = copiasProfunda(obj[clave]);
}
return copia;
}11.3. Evitar Mutaciones Accidentales
11.4. Validación de Estructuras
11.5. Transformaciones sin Mutación
11.6. Optional Chaining (?.)
?.)11.7. Nullish Coalescing (??)
??)11.8. Casos Prácticos: Datos de APIs
Resumen del Capítulo
La manipulación segura de datos previene bugs y hace el código más predecible.
💡 Conceptos Clave:
Inmutabilidad: Evita efectos secundarios
Copias profundas: Necesarias para datos anidados
Object.freeze(): Congelación de objetos
Optional chaining (?.): Acceso seguro
Nullish coalescing (??): Valores por defecto seguros
Validación: Verificar estructura de datos
Transformaciones: Crear nuevos datos sin mutar
🤔 Preguntas de Reflexión:
¿Cuál es la diferencia entre copias superficiales y profundas?
¿Cuándo usarías optional chaining?
¿Cuál es la diferencia entre ?? y ||?
¿Cómo validarías datos de una API?
Última actualización
¿Te fue útil?