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

bootstrap(MyAppComponent, [MyClass]);

但是,我想将我的类绑定到一个接口,比如:

boostrap(MyAppComponent, [???]);

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

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

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

推荐答案

简而言之,问题是在编译typescript时接口消失了.所以你必须使用@Inject和一个字符串.

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

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

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

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

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

可以这样使用:

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

Typescript相关问答推荐

React router 6.22.3不只是在生产模式下显示,为什么?

`((PrevState:NULL)=>;NULL)|null`是什么意思?

如何使用泛型类型访问对象

typescribe警告,explate—deps,useEffect依赖项列表

Next.js错误:不变:页面未生成

类型脚本中没有接口的中间静态类

使用axios在ngOnInit中初始化列表

如何实现异构数组内函数的类型缩小

类型TTextKey不能用于索引类型 ;TOption

如何 bootstrap TS编译器为类型化属性`T`推断正确的类型?

如何正确调用创建的类型?

将对象的属性转换为正确类型和位置的函数参数

如何键入派生类的实例方法,以便它调用另一个实例方法?

如何在Nextjs路由处理程序中指定响应正文的类型

设置不允许相同类型的多个参数的线性规则

如何从JWT Reaction中提取特定值

为什么过滤器不改变可能的类型?

Typescript 和 Rust 中跨平台的位移数字不一致

如何将 MUI 主题对象的自定义属性与情感样式组件中的自定义props 一起使用?

显式推断元组类型