// Learn more at http://blog.wolksoftware.com/introducing-inversify-2
var inversify = require("inversify@2.0.0-alpha.3");
require("reflect-metadata");
class Katana {
hit() {
return "cut!";
}
}
class Shuriken {
throw() {
return "hit!";
}
}
class Ninja {
constructor(katana, shuriken) {
this._katana = katana;
this._shuriken = shuriken;
}
fight() { return this._katana.hit(); };
sneak() { return this._shuriken.throw(); };
}
// Declare injections
inversify.inject("IKatana", "IShuriken")(Ninja);
// Declare bindings
var kernel = new inversify.Kernel();
kernel.bind("INinja").to(Ninja);
kernel.bind("IKatana").to(Katana);
kernel.bind("IShuriken").to(Shuriken);
// Resolve dependencies
var ninja = kernel.get("INinja");
return ninja;