InversifyJS @multiInject键值映射

时间:2019-03-25 13:57:09

标签: javascript typescript dependency-injection inversifyjs

我正在尝试使用InversifyJS创建忍者。可以说我的忍者可以同时使用多种武器战斗。我可以使用@multiInject()装饰器来实现它:

@injectable()
class Ninja implements Warrior {

   private _weapons: Weapon[];

   public constructor(
       @multiInject(TYPES.Weapon) weapons: Weapon[],
   ) {
       this._weapons = weapons;
   }

   public fight() {
       this._weapons.forEach( weapon => weapon.fight());
   }

}

container.bind(TYPES.Weapon).to(Katana);
container.bind(TYPES.Weapon).to(Shuriken);

如果我将武器存储为阵列也可以。但是,如果我想将它们存储为键值对呢?

private _weapons: { [weaponId: string]: Weapon };

...

public fight() {
    this._weapons["katana"].fight();
    this._weapons["shuriken"].fight();
}

如何使用Inversify来实现这一点?

0 个答案:

没有答案