TypeScript de Cero a Experto / Proyectos + retos
Proyecto: Mi Bolsillo en TypeScript estricto
La app que construiste en JavaScript, ahora blindada con tipos. "Mi Bolsillo" migra a
TypeScript estricto y, en el camino, junta casi todo el supercurso: uniones de literales,
Resultado<T>, utility types, una clase con estado privado, y Record para los totales.
El resultado es el mismo comportamiento de siempre —con una capa de tipos que hace
imposibles clases enteras de bugs.
Reto
Mi Bolsillo tipado de punta a punta
Qué debes construir
El motor de "Mi Bolsillo" completamente tipado. Al ejecutarse debe imprimir EXACTAMENTE:
➕ Café registrado (id 1)
➕ Bus registrado (id 2)
✗ Rechazado: el valor debe ser positivo
Total: 6800
Por categoría -> comida: 4000, transporte: 2800, ocio: 0
Buscar id 2: Bus
Buscar id 99: no existe
Requisitos (usa lo que aprendiste en TODO el curso):
Categoria: unión de literales derivada de un arrayas const(módulo 2).Gasto:{ id; nombre; valor; categoria }; yGastoNuevo = Omit<Gasto, "id">(módulo 6) para crear.Resultado<T>: la discriminated union genérica{ ok: true; datos: T } | { ok: false; error: string }(módulos 4 y 5).class Bolsillocon movimientos PRIVADOS y:agregar(datos: GastoNuevo): Resultado<Gasto>— valida (valor > 0o error), asigna unidincremental, guarda, y devuelveResultado.- getter
total: number. porCategoria(): Record<Categoria, number>— mapa exhaustivo (módulo 6).buscar(id: number): Resultado<Gasto>.
- El guion que produce la salida, manejando cada
Resultadocon narrowing (if (r.ok)).
Reglas
- Configúralo como estricto mentalmente: nada de
any, maneja cadaundefined, usa los tipos derivados en vez de reescribir formas. - Cada método que puede fallar devuelve
Resultado<T>, no lanza. - Los movimientos son privados de verdad. Salida exacta.
150:00
Cuando estés listo, arranca el reloj.
Qué sigue
Un proyecto completo, tipado de punta a punta. Ahora, el otro músculo de una entrevista de TypeScript: los type-challenges. La próxima lección abre los diez katas de tipos —puzzles que se resuelven SOLO con el sistema de tipos, sin runtime—, empezando por los fundamentales. La gimnasia mental que te vuelve fluido en tipos.