Objetos & TypeScript

Guía técnica sobre manipulación avanzada, inmutabilidad y contratos de datos para entornos colaborativos.

GitHub Ready
Contexto de Colaboración

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.

Entrada

Objeto Base (Ruddy)

Ataque: 15 | Vida: 100

Salida

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.

K

Object.keys()

Lista de propiedades. Ideal para generar cabeceras de tablas o menús dinámicos.

V

Object.values()

Lista de datos. Perfecto para realizar cálculos matemáticos sobre el contenido.

E

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

26 (15 Base + 11 Bonus de Ana)
// Creamos un nuevo objeto en memoria
const personajeAna = {
  ...ruddyObj, // Copiamos propiedades
  ataque: 26, // Sobrescribimos el valor
  habilidad: "Espada" // Añadimos expansión
};
Seguridad de Tipos

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
🚫

Error de Validación Real

Type 'string' is not assignable to type 'boolean'.

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