A minimalistic and lightweight DI container written in Typescript
npm i @vposd/simple-di --save
Class decorator adds class to global registry and add to container by default. Each container has different class instance.
import 'reflect-metadata';
import { Container } from '@vposd/simple-di';
@Injectable()
class Some {
constructor(
private dep: Dependency
) { }
}
const container = new Container();
const instance = container.get(Some);
Parameter decorator allows inject interface and other object and non-object values.
import 'reflect-metadata';
import { Container } from '@vposd/simple-di';
const Worker = Symbol.for('Worker');
interface Worker {
run();
}
class Task implements Worker {
run() { }
}
class App {
constructor(
@Inject(Worker) private worker: Worker
) { }
}
const container = new Container().registerType(Worker, Task);
const instance = container.get(Worker);