typedioc
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

TypedIOC

TypedIOC is the IOC Container for Typescript

Installation

npm install typedioc --save

Basic usage

Add experimentalDecorators": true and "emitDecoratorMetadata": true to your compilerOptions

import {Container, Lifetime,resolvable} from "typedioc";
@resolvable()
class Car{

    public engine: Engine;

    constructor(engine: Engine){
        this.engine=engine;
    }
}
var container: Container = new Container();
var car: Car = container.resolve<Car>(Car);

Register types

import {Container, Lifetime,resolvable} from "typedioc";

@resolvable()
class Vehicle{

    public serialNumber: number;

    constructor(){
        this.serialNumber=Math.random();
    }

}

@resolvable()
class Car extends Vehicle{

    public engine: Engine;

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

}
//Option 1: Singleton, each resolved Vehicle will point to the same instance
var container: Container = new Container();
container.registerType(Vehicle,Car,Lifetime.Singleton);
var vehicle1: Vehicle = container.resolve<Vehicle>(Vehicle);//vehicle1 is a instance of Car
var vehicle2: Vehicle = container.resolve<Vehicle>(Vehicle);
//vehicle1.serialNumber == vehicle2.serialNumber

//Option 2: transient, each resolved Vehicle will be a new instance
var container2: Container = new Container();
container2.registerType(Vehicle,Car,Lifetime.Transient);
var vehicle3: Vehicle = container2.resolve<Vehicle>(Vehicle);
var vehicle4: Vehicle = container2.resolve<Vehicle>(Vehicle);
//vehicle3.serialNumber != vehicle4.serialNumber

Register instances

import {Container, Lifetime,resolvable} from "typedioc";

@resolvable()
class Vehicle{

    public serialNumber: number;

    constructor(){
        this.serialNumber=Math.random();
    }

}

@resolvable()
class Car extends Vehicle{

    public engine: Engine;

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

}
var container: Container = new Container();
var carInstance: Car = new Car();
carInstance.serialNumber=1234;
container.registerInstance(Vehicle,carInstance);
var resolvedVehicle: Vehicle = container.resolve<Vehicle>(Vehicle);

Readme

Keywords

none

Package Sidebar

Install

npm i typedioc

Weekly Downloads

0

Version

0.0.4

License

MIT

Last publish

Collaborators

  • cedware
  • npgrosser