Repositorio de estudio para aprender TypeScript de forma progresiva: módulos documentados con TSDoc que se ejecutan en consola, retos con verificación automática y un roadmap por fases.
- Comprender el sistema de tipos de TypeScript, desde lo básico hasta tipos avanzados.
- Practicar con configuración estricta (
strict: true) para adquirir buenos hábitos desde el inicio. - Consolidar cada tema con ejercicios verificables y soluciones comentadas.
| Herramienta | Versión |
|---|---|
| Node.js | LTS (20 o superior) |
| pnpm | 10 o superior |
| Git | Cualquiera reciente |
git clone https://github.com/TU_USUARIO/typescript-practice.git
cd typescript-practice
pnpm installpnpm bloquea por defecto los scripts de instalación de las dependencias. Si ves
ERR_PNPM_IGNORED_BUILDS, ejecutapnpm approve-buildsy apruebaesbuild.
| Comando | Descripción |
|---|---|
pnpm start |
Ejecuta todos los módulos de src/ en orden |
pnpm start tipos |
Ejecuta solo los módulos cuyo identificador contenga tipos |
pnpm start -- --list |
Lista los módulos disponibles |
pnpm dev |
Ejecuta en modo vigilancia: se relanza al guardar cambios |
pnpm typecheck |
Verifica los tipos de todo el proyecto sin generar archivos |
pnpm exec tsx <archivo.ts> |
Ejecuta un archivo individual |
typescript-practice/
├── src/ # Módulos de estudio (cada uno imprime en consola)
│ ├── index.ts # Punto de entrada: registra y ejecuta los módulos
│ ├── 01-basicos/
│ │ └── tipos.ts
│ ├── 02-objetos-e-interfaces/
│ ├── 03-genericos/
│ ├── 04-clases/
│ └── 05-asincronia/
├── retos/ # Enunciados con verificación automática
│ └── 01-basicos/
├── soluciones/ # Soluciones comentadas, misma ruta que los retos
│ └── 01-basicos/
├── ROADMAP.md # Plan de estudio por fases
├── tsconfig.json
├── package.json
└── README.md
Cada reto es un archivo con enunciado, una función pendiente (// TODO) y aserciones que validan la solución:
pnpm exec tsx retos/01-basicos/reto-01-describir-tipo.tsSi el reto se resolvió correctamente imprime ✔ Reto 01 superado; de lo contrario, falla indicando la aserción incumplida. Las soluciones están en soluciones/ con el mismo nombre de archivo. Más detalles en retos/README.md.
El plan completo está en ROADMAP.md. Resumen:
| Fase | Enfoque | Estado |
|---|---|---|
| 1 | Fundamentos: tipos, funciones, objetos, narrowing | En curso |
| 2 | Abstracción: genéricos, clases, módulos | Pendiente |
| 3 | Tipos avanzados: utilitarios, mapeados, condicionales | Pendiente |
| 4 | Práctica profesional: asincronía, errores, pruebas, calidad | Pendiente |
| 5 | Proyectos: CLI, API, acceso a datos, paquete | Pendiente |
- Documentación: comentarios TSDoc (
/** */) en cada módulo y en cada declaración relevante. - Configuración: TypeScript en modo estricto, con
noUncheckedIndexedAccessactivado. - Nombres: carpetas y archivos en minúsculas con guiones; los temas llevan prefijo numérico para conservar el orden.
- Commits: formato Conventional Commits:
feat:,fix:,docs:,chore:.
Ejercicios con verificación automática. Cada archivo contiene el enunciado, una función con la marca // TODO y un bloque de aserciones al final.
-
Abre el reto y lee el enunciado.
-
Implementa la función sin modificar el bloque de verificación.
-
Ejecútalo:
pnpm exec tsx retos/01-basicos/reto-01-describir-tipo.tsSi imprime
✔ Reto 01 superado, está resuelto. Si lanza un error, el mensaje indica qué aserción falló. -
Ejecuta
pnpm typecheckpara confirmar que además cumple los tipos. -
Solo después de intentarlo, compara con
soluciones/en la misma ruta y nombre.
| Tema | Reto | Conceptos |
|---|---|---|
| 01 · Básicos | 01 · Describir el tipo de un valor | unknown, narrowing, typeof |
| 01 · Básicos | 02 · Distancia entre dos puntos | Tuplas etiquetadas |
| 01 · Básicos | 03 · Máquina de estados | Uniones de literales, readonly |
| 01 · Básicos | 04 · Intersección de tipos | &, composición |
| 01 · Básicos | 05 · Type guard sobre una ruta | Tipos de plantilla, predicados de tipo |
Distribuido bajo la licencia MIT.