2017-11-22 19 views
0

に割り当てます。Type<any>にジェネリックタイプを割り当てようとすると、そのタイプが角度成分であることがわかっても正しいタイプ制約を取得できません。Typescriptは汎用タイプを変数

ただし、コンポーネントタイプを直接割り当てることはできます。

これは

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

このdoesntが動作します。

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

それが失敗した

でエラーTS2693: 'TComponentは、' 唯一のタイプを指しますが、ここで 値として使用されています。

どのように私はそれはので、私のコンポーネントメソッドが成分のみを受け入れる、またはカントがしなければすることは、少なくとも、それは私を指示しなければType<any>に私ができると同じようにジェネリック型を割り当てることができることを確認することができます。

答えて

1

Genericsはタイプ消去を使用してTypescriptで実装されているため、実行時にTComponentは使用できません。代わりに関数の引数としてクラスを渡すことができます:

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

優秀!ちょうど私が探していたもの、非常に感謝 –

関連する問題