Durante años, la inyección de dependencias (DI) en Node.js y TypeScript ha estado dominada por el uso de decoradores. Frameworks como NestJS popularizaron el patrón @Injectable() y @Inject() directamente sobre las clases de dominio. A simple vista parece cómodo, pero esconde un acoplamiento sutil: la lógica de negocio termina importando el contenedor de DI. Eso vulnera principios esenciales como la inversión de dependencias y la arquitectura limpia. Un servicio que debería ser puramente dominio ahora sabe que existe un framework de infraestructura, lo que dificulta pruebas unitarias, migraciones o incluso el intercambio del contenedor.

Una alternativa más limpia consiste en externalizar la configuración del DI mediante archivos YAML, JSON o scripts de arranque. La clase de servicio queda como una clase TypeScript normal, sin decoradores ni imports del contenedor. Las dependencias se resuelven por tipo o mediante claves definidas en un archivo de configuración. Este enfoque, inspirado en cómo Symfony maneja la inyección en PHP, permite que el dominio no sepa que está siendo inyectado. La estrategia de selección de un proveedor de pago, por ejemplo, se define en un fichero: se puede cambiar de Stripe a PayPal modificando una línea, sin tocar el código de negocio.

El verdadero valor de esta aproximación no es solo técnico, sino estratégico. Al mantener el dominio libre de infraestructura, las aplicaciones ganan flexibilidad para adaptarse a nuevos requisitos. En Q2BSTUDIO aplicamos esta filosofía en el desarrollo de aplicaciones a medida, donde la independencia entre capas permite escalar, sustituir servicios cloud AWS y Azure o integrar inteligencia artificial sin reescribir la lógica central. La inyección de dependencias sin decoradores se convierte en un aliado para proyectos que requieren alta capacidad de evolución.

Por supuesto, el ecosistema ha entrenado a los desarrolladores a asociar DI con decoradores, y NestJS sigue siendo una excelente opción para equipos que apuestan por un framework completo. Pero cuando el objetivo es construir software modular, testeable y preparado para el futuro —ya sea con agentes IA o dashboards de Power BI—, separar la configuración de la implementación marca la diferencia. La IA para empresas que implementamos en Q2BSTUDIO se beneficia directamente de este desacoplamiento: los pipelines de inferencia pueden intercambiarse sin tocar los servicios de negocio.

Nueve años de experiencia en producción demuestran que un contenedor de DI puede ser una herramienta de infraestructura, no una mancha en el dominio. La ausencia de decoradores no es una limitación, sino una decisión arquitectónica. Y cuando se combina con servicios cloud, ciberseguridad y soluciones de inteligencia de negocio, el resultado es un ecosistema tecnológico robusto, donde cada componente juega su papel sin contaminar al otro.