Patrones de inyección de dependencias en aplicaciones TypeScript

Cuando un módulo importa e instancia sus dependencias directamente, resulta imposible probarlo de forma aislada, intercambiar implementaciones o reutilizarlo en distintos contextos. La inyección de dependencias invierte ese control: quien llama proporciona las dependencias en lugar de que el módulo las cree.

El patrón más simple y explícito. Las dependencias son parámetros, y el sistema de tipos hace cumplir el contrato.