Repositorio educativo para aprender TypeScript desde cero hasta nivel intermedio mediante ejercicios practicos, progresivos y contextualizados en intereses reales de estudiantes.
TypeScript es un superset de JavaScript que agrega tipado estatico, mejores herramientas de autocompletado y validaciones antes de ejecutar el codigo. El objetivo no es escribir mas codigo, sino detectar errores temprano y construir software mas mantenible.
| JavaScript | TypeScript |
|---|---|
| Tipado dinamico en tiempo de ejecucion. | Tipado estatico durante desarrollo y compilacion. |
| Los errores de tipos suelen aparecer al ejecutar. | Muchos errores se detectan antes de ejecutar. |
| No requiere compilacion. | Se compila a JavaScript. |
| Flexible para prototipos rapidos. | Mas seguro para proyectos medianos y grandes. |
- Instalar Node.js LTS desde https://nodejs.org.
- Verificar instalacion:
node --version
npm --version- Instalar dependencias del repositorio:
npm installEste repositorio incluye TypeScript como dependencia de desarrollo. Si necesitas instalarlo globalmente para practicar en otros proyectos:
npm install -g typescript
tsc --versionCada ejercicio contiene un index.ts. Ejecuta un ejercicio basico con:
npm run dev -- ejercicios/01-introduccion-typescript/index.tsEjecuta un ejercicio intermedio con:
npm run dev -- intermedio/ejercicios/01-dashboard-kd-shooter/index.tsnpm run buildEl comando valida el proyecto con tsc --noEmit, sin generar archivos JavaScript.
Ramas principales:
main: versiones estables.dev: rama principal de desarrollo.- Ramas personales: trabajo de estudiantes.
Ejemplos de ramas personales:
git checkout dev
git pull origin dev
git checkout -b juan-perez
git add .
git commit -m "feat: solve exercise 01"
git push -u origin juan-perezLos estudiantes deben abrir Pull Request hacia dev. Nadie debe mezclar cambios directamente a main salvo administradores del repositorio.
- Publica tu rama personal.
- En GitHub, entra al repositorio.
- Selecciona Compare & pull request.
- Base:
dev. - Compare: tu rama personal.
- Describe que ejercicios resolviste y como probaste tu codigo.
- Solicita revision.
Las entregas de estudiantes no deben modificar los archivos base. Cada respuesta debe ir en una carpeta personal dentro de resoluciones.
Ejemplo basico:
ejercicios/01-introduccion-typescript/resoluciones/juan-perez/index.ts
Ejemplo intermedio:
intermedio/ejercicios/01-dashboard-kd-shooter/resoluciones/juan-perez/index.ts
- Usa nombres claros y descriptivos.
- Mantén funciones pequenas y con una sola responsabilidad.
- No uses
anysalvo justificacion tecnica. - Ejecuta
npm run buildantes de enviar PR. - Lee el README de cada ejercicio antes de programar.
- No modifiques archivos dentro de
respuestas/para entregar ejercicios. - Escribe commits pequenos y con mensajes claros.
- Variables y funciones:
camelCase. - Tipos, interfaces, clases y enums:
PascalCase. - Carpetas de ejercicios: numero + nombre en kebab-case.
- Ramas personales: nombre-apellido en minusculas, sin tildes ni espacios.
/
├── README.md
├── CONTRIBUTING.md
├── .editorconfig
├── .gitignore
├── package.json
├── tsconfig.json
├── .vscode/
├── docs/
├── ejercicios/
├── intermedio/
└── respuestas/
| # | Ejercicio | Contexto | Concepto |
|---|---|---|---|
| 01 | Introduccion a TypeScript | Videojuegos Shooter | conocer la sintaxis basica de TypeScript y ejecutar un archivo tipado |
| 02 | Tipos primitivos | Motos | usar string, number, boolean, null y undefined de forma segura |
| 03 | Arrays y Tuplas | Equipos de futbol | representar listas homogeneas y posiciones fijas con tipos |
| 04 | Interfaces | Personajes RPG | definir contratos para objetos con propiedades obligatorias y opcionales |
| 05 | Type Alias | Catalogo de ropa | crear alias reutilizables para objetos, literales y combinaciones |
| 06 | Funciones tipadas | Sistema de puntuacion deportiva | tipar parametros, retornos y funciones auxiliares |
| 07 | Objetos avanzados | Biblioteca de peliculas | usar objetos anidados, propiedades readonly, opcionales y metodos |
| 08 | Union Types | Vehiculos deportivos e hiperdeportivos | permitir valores controlados y discriminar variantes |
| 09 | Enums | Generos musicales | agrupar constantes con nombre para opciones conocidas |
| 10 | Generics | Inventario de videojuegos | crear funciones y estructuras reutilizables sin perder tipos |
| 11 | Clases | Sistema de motocicletas | encapsular estado y comportamiento con clases |
| 12 | Herencia | Personajes de videojuegos MOBA | reutilizar comportamiento con clases base y especializadas |
| 13 | Modulos | Aplicacion de viajes | separar responsabilidades usando export e import |
| 14 | Async/Await | Consulta de API de peliculas | trabajar con promesas, funciones asincronas y manejo de errores |
| 15 | Proyecto Final Integrador | Gestor de personajes para videojuego RPG con TypeScript | integrar tipos, interfaces, clases, generics, modulos y asincronia |
El nivel intermedio agrega 80 ejercicios progresivos en intermedio/. La dificultad sube por bloques:
- 01-20: interfaces, aliases, arrays tipados, filtros, rankings y validaciones.
- 21-40: reglas de negocio, union types, Record, Map, Set, clases y generics.
- 41-60: fechas, estados, reportes, async/await y errores tipados.
- 61-80: reducers, state machines, persistencia simulada y mini sistemas integradores.
Las reglas completas para proteger main y dev estan documentadas en docs/github-governance.md.