Inversify JS @multiInject не работает, выдает ошибку «Неопределенное совпадение найдено для serviceIdentifier» - PullRequest
0 голосов
/ 19 апреля 2020

Я использую Inversify Js для DI в моем проекте машинописи. При использовании декоратора @multiInject я получаю сообщение об ошибке «Неоднозначное совпадение найдено для serviceIdentifier». Я следую этому примеру (https://github.com/inversify/InversifyJS/blob/master/wiki/multi_injection.md). Почему я получаю эту ошибку? Любая помощь будет оценена. Спасибо.

import 'reflect-metadata';
import { Container, multiInject, injectable, } from 'inversify';

interface IWeapon {
  name: string;
}

interface INinja {
  weapons: IWeapon[],
  displayWeapons(): void,
}

@injectable()
class Katana implements IWeapon {
  public name = 'Katana';
}

@injectable()
class Shuriken implements IWeapon {
  public name = 'Shuriken';
}

@injectable()
class Ninja implements INinja {
  public weapons: IWeapon[];

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

  public displayWeapons = () => {
    console.log(this.weapons[0].name, this.weapons[1].name);
  }
}

const container = new Container();

container.bind<INinja>("Ninja").to(Ninja);
container.bind<IWeapon>("Weapon").to(Katana);
container.bind<IWeapon>("Weapon").to(Shuriken);

const ninja = container.get<INinja>('Weapon');
ninja.displayWeapons(); // Should display all weapons.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...