当尝试将泛型类型分配给Type<any>
时,当我知道类型是角度分量时,我无法使类型约束正确。
但是,直接指定组件类型可以正常工作。
这有效
private routeComponent: Type<any>;
public component<TComponent>(): RouteBuilder {
this.routeComponent = HomeComponent;
return this;
}
这不是。
private routeComponent: Type<any>;
public component<TComponent>(): RouteBuilder {
this.routeComponent = TComponent;
return this;
}
失败了
错误TS2693:'TComponent'仅引用类型,但正在用作 这里的价值。
我怎么能这样做,所以我的组件方法只接受一个组件,或者如果不能这样做,至少能够将泛型类型分配给Type<any>
,就像我直接指定一样。< / p>
答案 0 :(得分:1)
使用类型擦除在Typescript中实现泛型,因此在运行时TComponent
将不可用。您可以将该类作为参数传递给函数:
public component<TComponent>(type: Type<TComponent>): RouteBuilder {
this.routeComponent = type;
return this;
}
component(HomeComponent);