将类绑定到接口

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

引导(MyAppComponent,[MyClass]);

但是,我希望将我的类绑定到一个接口,如下所示:

boostrap(MyAppComponent,[???]);

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

类MyAppComponent{
构造函数(my_类:IMyClass){
}
};

这在Angular2中可能吗?如果是,如何指定绑定

简而言之,问题在于编译typescript时接口消失了。因此,您必须使用带有字符串的@Inject

或者还有另一种选择,如果您查看Victor Savkin的最后一篇文章,您可以在评论中找到:

一些背景。在TypeScript中,接口是结构化的,不会在运行时保留。因此,您必须按如下方式使用ILoginService:

构造函数(@Inject(“ILoginService”)s:ILoginService)。

您不必使用字符串-任何对象都可以在其中传递。我们实际上提供了一个名为OpaqueToken的对象,可用于此目的

接口ILoginService{login(凭证);}
const ILoginService=新的OpaqueToken(“登录服务”);

可以这样使用:

构造函数(@Inject(ILoginService)s:ILoginService)。

发表评论