inversify:如何处理绑定到通用接口/类

时间:2017-06-30 21:46:46

标签: node.js inversion-of-control inversifyjs

我正在使用inversify来创建使用typescript开发的平均堆栈应用程序。按照此URL:https://www.npmjs.com/package/inversify处的说明,我创建了inversify.config.ts文件并添加了与我的需求相关的代码。我的一个绑定收到以下错误: "错误:(39,71)TS2349:无法调用类型缺少调用签名的表达式。输入' typeof ExampleRepository'没有兼容的呼叫签名。"。

inversify.config.ts:
myContainer.bind<IExampleRepository<IGroup>>(TYPES.IExampleRepository).to(ExampleRepository<IGroup>).whenTargetNamed("exampleRepository");

types.ts:
IExampleRepository: Symbol("ExampleRepository")

如何改变inversify.config.ts条目以满足这种需求?我在这做错了什么?可以反转处理这种情况吗?

1 个答案:

答案 0 :(得分:0)

我认为如果您的界面是通用的IExampleRepository<T>,那么您的ExampleRepository就不需要<IGroup>泛型。

import { Container, injectable } from "inversify";


const TYPES = {
    IExampleRepository: Symbol("IExampleRepository"),
};

class IGroup {

}

interface IExampleRepository<T> {
    group: T;
}

@injectable()
class ExampleRepository implements IExampleRepository<IGroup> {
    group: IGroup
}

const myContainer = new Container();
myContainer.bind<IExampleRepository<IGroup>>(TYPES.IExampleRepository).to(ExampleRepository).whenTargetNamed("exampleRepository");

`

请为IExampleRepository和Examplerepository提供更多示例代码。这可能有助于获得更好的答案。