Skip to content

Minimalistic and lightweight DI container written in Typescript

Notifications You must be signed in to change notification settings

vposd/simple-di

Repository files navigation

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

About

Minimalistic and lightweight DI container written in Typescript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published