@vladbasin/ts-dependencies

TypeScript dependency management without magic.

Usage no npm install needed!

<script type="module">
  import vladbasinTsDependencies from 'https://cdn.skypack.dev/@vladbasin/ts-dependencies';
</script>

README

ts-dependencies

TypeScript dependency management without magic.

Install

npm install @vladbasin/ts-dependencies --save

Getting Started

This library helps to inject dependencies which are singletons (useful for decoupling business services accross the app).

Given these classes

class Engine {
    private _speed: number = 10;

    public get speed() { 
        return this._speed;
    }
}

class Car {
    private _engine: Engine;

    constructor(dep: { engine: Engine }) {
        this._engine = dep.engine;
    }

    public printSpeed() {
        console.log(this._engine.speed);
    } 
}

Register dependencies

import { ServiceCollectionBuilder } from "@vladbasin/ts-dependencies";

const serviceCollectionBuilder = new ServiceCollectionBuilder();
serviceCollectionBuilder.addPure("engine", Engine);
serviceCollectionBuilder.add("car", Car, ["engine"]);
const services = serviceCollectionBuilder.build();

Resolve dependency

const car = services.get<Car>("car");
car.printSpeed();