Typescript将泛型类型赋给变量

时间:2017-11-22 11:24:23

标签: angular typescript generics

当尝试将泛型类型分配给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>

1 个答案:

答案 0 :(得分:1)

使用类型擦除在Typescript中实现泛型,因此在运行时TComponent将不可用。您可以将该类作为参数传递给函数:

public component<TComponent>(type: Type<TComponent>): RouteBuilder {
    this.routeComponent = type;
    return this;
}
component(HomeComponent);