import 'reflect-metadata'; import { container, inject, injectable, singleton } from 'tsyringe'; @singleton() class DependencyA { action() { console.log('Dependency A > action() > _c1: '); } } @injectable() @singleton() class BusinessLogic { constructor(private _dependencyA: DependencyA) {} foo() { this._dependencyA.action(); } } @injectable() class BusinessLogicInjected { constructor( public prop1: string, private _BusinessLogic?: BusinessLogic, ) {} foo() { console.log('prop1: ', this.prop1); this._BusinessLogic?.foo(); } } const _BusinessLogicInjected = container.resolve(BusinessLogicInjected); _BusinessLogicInjected.foo();