代码之家  ›  专栏  ›  技术社区  ›  Richard Friend

Typescript将泛型类型分配给变量

  •  0
  • Richard Friend  · 技术社区  · 6 年前

    尝试将泛型类型分配给 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”仅引用类型,但正在用作 这里有一个值。

    如何使我的组件方法只接受一个组件,或者如果不能这样做,至少能够将泛型类型分配给 类型(<);任何>; 如果我直接做的话,我也能做到。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Titian Cernicova-Dragomir    6 年前

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

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