TypeScript de Cero a Experto / Proyectos + retos
Proyecto final: un API client tipado end-to-end
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
Qué debes construir
Un ApiClient reutilizable que carga y valida cualquier recurso. Al ejecutarse debe
imprimir EXACTAMENTE:
GET /gastos -> 2 gastos
· Café: 4000
· Bus: 2800
GET /gastos/1 -> Café
GET /roto -> Error: datos inválidos
Requisitos (todo el curso, junto):
Resultado<T>: la discriminated union genérica de siempre.type Validador<T> = (x: unknown) => x is T: un type guard tipado (módulo 4).class ApiClientcon un método genérico:get<T>(url: string, validar: Validador<T>): Promise<Resultado<T>>— hace la "petición" (simulada), recibeunknown, lo valida con elvalidarINYECTADO, y devuelveResultado<T>(ok: truecon los datos tipados, ook: falsesi no valida).
- Validadores concretos:
esGastoyesArrayDeGastos(type guards). - El guion: carga una lista de gastos, un gasto individual, y una ruta que devuelve
basura —manejando cada
Resultadocon narrowing.
Reglas
- Los datos del "servidor" entran como
unknown; elApiClientno 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
anyfuera 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,
interfacevstype, 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/Recordy cómo se construyen con mapped, conditional y template literal types. - El mundo real: tipar el DOM,
fetchcon Zod, declaration files, clases y decoradores. - El oficio:
stricta 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.