CodeForge

TypeScript de Cero a Experto / TS en el mundo real

Reto: una capa de datos tipada de punta a punta

Reto35 min60 XP

El reto que junta el mundo real: una capa de datos que carga registros de un "servidor", los VALIDA en la frontera (porque los datos externos son unknown), descarta los inválidos y procesa solo los buenos —con seguridad de tipos de punta a punta. Es el esqueleto de la capa de datos de cualquier app profesional, y el TypeScript que escribirás en el trabajo.

Reto

La capa de datos tipada

Media30 min60 XP(×2 sin mirar la solución)

Qué debes construir

Un servicio que carga gastos de un servidor simulado, valida cada uno en runtime, y reporta. Al ejecutarse debe imprimir EXACTAMENTE:

terminal

Cargados 4 registros del servidor

Válidos: 2 (descartados 2)

Total de gastos válidos: 22000

Requisitos:

  1. type Gasto: { nombre: string; valor: number }.
  2. esGasto(x: unknown): x is Gasto: un type guard que valide en runtime que x es un objeto con nombre string y valor number. (En un proyecto real usarías Zod; aquí lo haces a mano para practicar el concepto.)
  3. class RepositorioGastos con:
    • un método cargarCrudos(): Promise<unknown[]> que simule el servidor devolviendo un array MIXTO (válidos e inválidos) —tipado como unknown[], honesto.
    • un método cargarValidos(): Promise<Gasto[]> que cargue los crudos, los FILTRE con el type guard, y devuelva solo los válidos ya tipados.
  4. El guion: carga los crudos (reporta cuántos llegaron), carga los válidos (reporta válidos y descartados), y suma el total de los válidos.

Reglas

  • Los datos "del servidor" son unknown[] hasta validarse: nada de asumir su forma.
  • El filtrado usa el type guard, de modo que TS trate el resultado como Gasto[].
  • Nada de any fuera de la comprobación interna del guard. Salida exacta.

30:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 8 conquistado: manejas el DOM, los datos remotos, la validación y las clases con la soltura del mundo real. Solo quedan dos módulos. El 9 te vuelve un profesional de la CONFIGURACIÓN —strict a fondo, paths, project references, ESLint con TS—: afinar el entorno para que trabaje a tu favor. La recta final del supercurso.