1.0.3 • Published 5 years ago

@vposd/simple-di v1.0.3

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Travis codecov bundlephobia

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);