Dependency injection without frameworks in TypeScript

Explicit dependencies improve clarity and testability. You do not need a framework to achieve that.