javascript - InversifyJS @multiInject 键值映射
问题描述
我正在尝试用 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 实现这一点?
解决方案
推荐阅读
- javascript - 使用基于角度的 json + 环境在 head 标签中加载第三方 js
- windows - 如果 set /a 失败,如何设置变量?
- reactjs - ReactJS + Firebase 电子邮件发送
- node.js - 在数组中获取 RealmResults 而不是 NodeJs 中的对象
- python - 散景热图中出现白色间隙
- postgresql - 即时消息架构设计建议
- python - python 正则表达式是否遵循一般到特定匹配?
- python - Python中初始化嵌套列表的两种方法有什么区别
- python - 未推送 Conda 包元数据
- xamarin - 在 IOS13 上的 Xamarin 中订阅外设特性时遇到问题