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