Chibi Izumi: Phased dependency injection for TypeScript
22 days ago
- #scala
- #typescript
- #dependency-injection
- TypeScript re-implementation of Scala's Izumi Project distage library for staged dependency injection.
- Features include fluent DSL for DI modules, type-safe bindings, @Reflected decorator for automatic dependency resolution, and async support with parallel execution.
- Supports multiple binding types, axis tagging for conditional bindings, lifecycle management, and fail-fast validation.
- Comparison table shows izumi-chibi-ts supports all listed features unlike other libraries like InversifyJS, TSyringe, etc.
- Example usage demonstrates defining classes with @Reflected, creating modules, and producing instances with Injector.
- Advanced features include Functoid for type-safe factories, @Id for named dependencies, set bindings, and axis-based activation.
- Lifecycle management for resources and separation of planning/production phases.
- Error detection for circular/missing dependencies and conflicting bindings.
- Module combination/override capabilities and both sync/async production methods.
- Project status: not battle-tested, MIT licensed, with sibling project izumi-chibi-py.