gpt4 book ai didi

dependency-injection - 将类绑定(bind)到接口(interface)

转载 作者:太空狗 更新时间:2023-10-29 16:50:40 26 4
gpt4 key购买 nike

使用 typescript ,我可以轻松地将类绑定(bind)到它们自己:

bootstrap(MyAppComponent, [MyClass]);

但是,我想将我的类绑定(bind)到一个接口(interface),如下所示:

boostrap(MyAppComponent, [???]);

这样我就可以按如下方式注入(inject)它:

class MyAppComponent {
constructor(my_class : IMyClass){
}
};

这在 Angular2 中可行吗?如果是,我必须如何指定绑定(bind)?

最佳答案

简而言之,问题是编译 typescript 时接口(interface)消失了。因此,您必须将 @Inject 与字符串一起使用。

或者还有另一个选项,如果你勾选the last article of Victor Savkin 你可以在评论中找到这个:

Some background. In TypeScript, interfaces are structural and are not retained at runtime. So you have to use ILoginService as follows:

constructor(@Inject("ILoginService") s:ILoginService).

You don't have to use a string - any object can be passed in there. We actually provide an object called OpaqueToken that can be used for this purpose.

interface ILoginService { login(credentials);}
const ILoginService = new OpaqueToken("LoginService");

can be used like this:

constructor(@Inject(ILoginService) s:ILoginService).

关于dependency-injection - 将类绑定(bind)到接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254952/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com