Skip to main content

Getting started

Start by installing inversify and reflect-metadata:

npm install inversify @inversifyjs/binding-decorators reflect-metadata

Next, lets declare some bindings. The InversifyJS API allows us to declare bindings using a fluent API:

import { Container, inject, injectable } from 'inversify';

@injectable()
class Katana {
public readonly damage: number = 10;
}

@injectable()
class Ninja {
constructor(
@inject(Katana)
public readonly katana: Katana,
) {}
}

const container: Container = new Container();

container.bind(Ninja).toSelf();
container.bind(Katana).toSelf();

const ninja: Ninja = container.get(Ninja);

console.log(ninja.katana.damage);

This small utility allows you to declare bindings using decorators:

@injectable()
@provide()
class Katana {
public readonly damage: number = 10;
}

@injectable()
@provide()
class Ninja {
constructor(
@inject(Katana)
public readonly katana: Katana,
) {}
}

const container: Container = new Container();

await container.load(buildProviderModule());

const ninja: Ninja = container.get(Ninja);

console.log(ninja.katana.damage);