El Escenario: Ana & Ruddy
En un equipo real, rara vez trabajas sola. Recibimos un objeto base de Ruddy. Nuestra misión: analizarlo y mejorarlo sin mutar los datos originales, aplicando los principios de la programación funcional.
Objeto Base (Ruddy)
Ataque: 15 | Vida: 100
Versión Ana
Ataque: 26 | + Habilidad "Espada"
// Representación del estado inicial const ruddyObj = { nombre: "Kael", ataque: 15, vida: 100 };
Inspección Selectiva
Usamos los métodos estáticos de la librería Object para desglosar la información sin iteraciones manuales pesadas.
Object.keys()
Lista de propiedades. Ideal para generar cabeceras de tablas o menús dinámicos.
Object.values()
Lista de datos. Perfecto para realizar cálculos matemáticos sobre el contenido.
Object.entries()
Parejas [clave, valor]. Es la herramienta que usamos para sincronizar nuestra interfaz con Ruddy.
Inmutabilidad
El Spread Operator es nuestra red de seguridad. Nos permite evolucionar el código de Ruddy sin alterar su fuente de verdad original.
Cálculo de Daño
// Creamos un nuevo objeto en memoria const personajeAna = { ...ruddyObj, // Copiamos propiedades ataque: 26, // Sobrescribimos el valor habilidad: "Espada" // Añadimos expansión };
Contratos de Datos
Validación en tiempo de desarrollo
Interface (El Contrato)
Obliga a que el objeto tenga una estructura fija. Si Ruddy cambia un nombre, TypeScript nos avisará de inmediato.
interface Heroe { nombre: string; vida: number; }
Type Alias (Uniones)
Limitamos los valores posibles a una lista cerrada. Evitamos que alguien introduzca estados inexistentes.
type Estado = | 'Vivo' | 'Herido' | 'Muerto';
Error de Validación Real
Este error ocurrió al intentar asignar un estado textual ("Vivo") a una propiedad que el contrato definía originalmente como boolean. TypeScript nos ahorró horas de debugging al detectar la inconsistencia antes de la ejecución.
Competencias Adquiridas
🧠
Pensamiento Funcional
🔐
Seguridad de Tipos
⚡
DOM Dinámico
📦
Gestión de Objetos