Lección 3 de 20· M06

Hechas: 0/20(0%)

M06L03Semana 1~5 h

Ficha M06

L03 — Encapsulación en TypeScript

~5 h · Semana 1

Encapsulación protege invariantes: el exterior no muta estado inválido.

Objetivo

Usar #privado, private, readonly donde corresponda; exponer API (interfaz de programación de aplicaciones) mínima estable.

Pasos

1. Lectura Handbook (40 min)

Classes: parameter properties, readonly, private fields.

2. Auditar superficie pública (60 min)

Lista cada export: ¿debe ser público? Reduce exports en index.ts si creaste barrel.

3. Implementación (120 min)

  • Colección interna no expuesta como array mutable.
  • Métodos agregar, buscar, no items.push desde fuera.

4. Tests solo vía API (90 min)

Reescribe tests que tocaban campos internos. Si necesitas inspección, método cantidad() o snapshot de DTO inmutable.

5. Nota de diseño (30 min)

En DOMINIO.md, sección Encapsulación: qué ocultaste y por qué.

Hecho cuando

  1. No hay acceso directo a estructuras mutables desde fuera del módulo.
  2. Tests pasan usando solo API pública.
  3. Documentaste decisiones de visibilidad.

Errores comunes

  • public items: Libro[] exportado.
  • #private en todo por estética sin criterio.

Siguiente

L04 — Nombres y funciones pequeñas (CC 1–3)

←→