CodeForge

TypeScript de Cero a Experto / Proyectos + retos

Proyecto final: un API client tipado end-to-end

Proyecto150 min150 XP

El proyecto que cierra el supercurso: un cliente de API genérico y tipado de punta a punta. Recibe datos del "servidor" como unknown, los VALIDA en la frontera, y devuelve Resultado<T> tipado —el patrón exacto de la capa de red de una app profesional—. Reúne genéricos, discriminated unions, validación en runtime y clases. Tu pieza de portafolio en TypeScript.

Reto

El API client genérico y tipado

Difícil150 min150 XP(×2 sin mirar la solución)

Qué debes construir

Un ApiClient reutilizable que carga y valida cualquier recurso. Al ejecutarse debe imprimir EXACTAMENTE:

terminal

GET /gastos -> 2 gastos

· Café: 4000

· Bus: 2800

GET /gastos/1 -> Café

GET /roto -> Error: datos inválidos

Requisitos (todo el curso, junto):

  1. Resultado<T>: la discriminated union genérica de siempre.
  2. type Validador<T> = (x: unknown) => x is T: un type guard tipado (módulo 4).
  3. class ApiClient con un método genérico:
    • get<T>(url: string, validar: Validador<T>): Promise<Resultado<T>> — hace la "petición" (simulada), recibe unknown, lo valida con el validar INYECTADO, y devuelve Resultado<T> (ok: true con los datos tipados, o ok: false si no valida).
  4. Validadores concretos: esGasto y esArrayDeGastos (type guards).
  5. El guion: carga una lista de gastos, un gasto individual, y una ruta que devuelve basura —manejando cada Resultado con narrowing.

Reglas

  • Los datos del "servidor" entran como unknown; el ApiClient no asume su forma.
  • El validador se INYECTA en get (módulo 4 y 13 de JS): el cliente no sabe qué valida, lo recibe.
  • Todo tipado, nada de any fuera del interior de los guards. Salida exacta.

150:00

Cuando estés listo, arranca el reloj.

Fin del supercurso de TypeScript

Lo lograste. Diez módulos: del "¿para qué TS si ya sé JS?" a construir un API client genérico y tipado, pasando por la maquinaria más profunda del sistema de tipos. Repasa lo que ahora SABES HACER:

  • Los fundamentos: tipos, uniones, literales, any/unknown/never, inferencia.
  • Las funciones y contratos: tipar firmas, interface vs type, sobrecargas.
  • El narrowing: type guards, discriminated unions, exhaustividad con never.
  • Los genéricos: de identity<T> a estructuras genéricas con constraints.
  • Los utility types y su maquinaria: Partial/Pick/Record y cómo se construyen con mapped, conditional y template literal types.
  • El mundo real: tipar el DOM, fetch con Zod, declaration files, clases y decoradores.
  • El oficio: strict a fondo, paths, ESLint type-aware, migrar JS a TS, y los type-challenges.

Ya no eres alguien que "escribe JavaScript con algunos tipos". Piensas en tipos: modelas tus datos para hacer los errores imposibles, no solo detectables. Lo que sigue en tu camino son los frameworks —React, Next.js, Angular, NestJS—, y todos hablan TypeScript de forma nativa: cada useState<T>, cada @Component, cada endpoint tipado que escribas se apoyará en lo que dominas ahora. La red de seguridad está tejida. Ahora se construye alto, y sin miedo a caer.