1.0.3 • Published 5 years ago
@vposd/simple-di v1.0.3
Simple DI
A minimalistic and lightweight DI container written in Typescript
Installation
npm i @vposd/simple-di --save
Usage
Injectable
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);
Inject
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);