L01 — Dominio inicial y entorno del proyecto
~5 h · Semana 1
M06 es ingeniería de software aplicada: modelas un dominio real sin frameworks web y con tipos estrictos.
Objetivo
Crear el proyecto TypeScript en projects/m06-programacion-ii/, elegir dominio (biblioteca o inventario) y definir interfaces nucleares con tests mínimos.
Pasos
1. Entorno (45 min)
mkdir -p projects/m06-programacion-ii/src
cd projects/m06-programacion-ii
npm init -y
npm install -D typescript tsx vitest @types/node
npx tsc --init
strict: true. Scripts: "test": "vitest run", "build": "tsc".
2. Elige dominio (30 min)
Documenta en DOMINIO.md: actores, reglas de negocio, 5 operaciones core. Ejemplo biblioteca: agregar, prestar, devolver, buscar, listar disponibles.
3. Interfaces (90 min)
// src/model.ts — adapta nombres a tu dominio
export interface Libro {
id: string;
titulo: string;
prestado: boolean;
}
export interface RepositorioLibros {
guardar(libro: Libro): void;
obtener(id: string): Libro | undefined;
}
4. Implementación en memoria (90 min)
Clase BibliotecaMemoria (o equivalente) con array o Map. Comportamiento real, no solo getters.
5. Tres tests (60 min)
Vitest: agregar, operación feliz, caso que debe fallar (libro inexistente). Deja el fallo claro (throw o Result; Result llega en L14).
6. Lectura CC (45 min)
Caps. 1–2: anota 5 reglas que aplicarás esta semana en comentarios al final de DOMINIO.md.
Lectura de esta lección
| Fuente | Qué leer |
|---|---|
| Código limpio | Caps. 1–2 |
| Pragmático | DRY (sección equivalente) |
| Catálogo | Bibliografía · M06 |
Hecho cuando
- Repo TS strict con ≥3 tests verdes.
DOMINIO.mddescribe el dominio elegido.- Hay al menos una interfaz + implementación en memoria.
Errores comunes
- Elegir dominio enorme (ERP completo).
- Clase
Librocon 20 propiedades irrelevantes.