InversifyJS @multiInject карта значений ключей - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь создать ниндзя с 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?

...