Volver al blog

Dependency Injection: contenedores DI en TypeScript

·1 min de lectura

¿Qué es Dependency Injection?

Dependency Injection es un patrón donde las dependencias de una clase se proporcionan desde fuera, no se crean internamente. Esto desacopla los componentes, facilita los tests y hace el código más flexible.

Sin DI

class UserService {
  private db = new PostgresDatabase(); // Acoplado
}

Con DI

class UserService {
  constructor(private db: Database) {} // Desacoplado
}

Contenedores DI

Los contenedores DI automatizan la creación y resolución de dependencias. Registras interfaces con sus implementaciones y el contenedor resuelve todo el árbol de dependencias.

tsyringe

Un contenedor ligero de Microsoft:

import { container, injectable, inject } from 'tsyringe';

@injectable()
class UserService {
  constructor(@inject('Database') private db: Database) {}
}

InversifyJS

El contenedor más completo para TypeScript. Soporta decoradores, middleware, contextos y más.

Beneficios

  • Testing: inyecta mocks fácilmente.
  • Flexibilidad: cambia implementaciones sin modificar código.
  • Ciclo de vida: controla si las dependencias son singleton, transient o scoped.

¿Quieres implementar DI en tu proyecto? En Vynta diseñamos arquitecturas desacopladas y testables.

Artículos relacionados

¿Tienes un proyecto en mente?

Hablemos