我正在尝试使用container-ioc,但很高兴使用任何提供IoC的软件包。我找不到使用打字稿泛型的任何示例。基本上,我想要:
interface A<T> {
foo();
}
class A<T> {
foo() {
}
}
interface B<T> {
bar: A<T>;
}
class B<T> {
bar: A<T>;
constructor(param: A<T>) {
this.bar = param;
}
}
我可以在其中设置IoC容器以将A注入B。我在节点应用程序中使用Typescript。我的语法似乎至少可以解析,但是由于我不知道如何传递通用参数,因此无法制作容器resolve()。更不用说,我不确定是否真的支持此功能。
答案 0 :(得分:0)
因此,我有一个适合我情况的解决方法。首先,我使用const MyFoo = Symbol("Foo<My>")
为通用类型设置符号。然后,在注册类型时使用工厂构造函数:
container.register([
{ token: MyBar, useFactory: () => new Bar<My>() },
token: MyFoo, useFactory: () => new Foo<My>( container.resolve(MyBar) )}]);
最后,我不@inject在构造函数上的参数。这种方法意味着我需要事先知道将要使用的泛型类型。就我而言,我这样做:我的泛型类型实现了实体存储库和相关类,而我的实体是泛型参数。在建立新实体时,我宁愿没有另一个地方可以维护,因此,如果有人有更好的解决方案,我将不接受此答案。