M02L03Semana 1~3 h
L03 — Control de flujo
~3 h · Semana 1
Condicionales y bucles con tipos claros: ramas que TypeScript puede seguir y funciones que retornan en todos los caminos.
Objetivo
Implementar un clasificador con if/else, switch y bucles, sin return olvidados.
Por qué importa
La CLI validará comandos e índices aquí. TS avisa cuando una rama no devuelve valor.
Pasos
1. Clasificador de notas (45 min)
src/flujo/clasificador.ts:
export type Nivel = "insuficiente" | "aprobado" | "notable" | "sobresaliente";
export function nivelDesdePuntos(puntos: number, max: number): Nivel {
if (max <= 0) {
throw new Error("max debe ser positivo");
}
const ratio = puntos / max;
if (ratio < 0.5) return "insuficiente";
if (ratio < 0.7) return "aprobado";
if (ratio < 0.9) return "notable";
return "sobresaliente";
}
Añade etiquetaCorta(nivel: Nivel): string con switch.
2. Bucles y acumuladores (40 min)
src/flujo/suma-rango.ts con sumaHasta(n) y primerDivisor(n): number | null.
3. Dos katas con bucles (50 min)
FizzBuzz tipado y búsqueda lineal sin .find todavía.
4. Lectura EJ (35 min)
Cap. 2 + 1 ejercicio en TS.
Lectura de esta lección
| Fuente | Qué leer |
|---|---|
| Eloquent JavaScript | Cap. 2 (control de flujo) |
| Catálogo | Bibliografía · M02 |
Hecho cuando
clasificador.tsysuma-rango.tscompilan; casomax <= 0cubierto.- Dos katas nuevas con bucles.
npx tsc --noEmitlimpio ensrc/.
Errores comunes
returnfaltante en una rama.switchsin salida clara por rama.- Bucles infinitos.