2016-04-11 6 views
4

はここに私の関数の定義です。実行時にTを型の文字列名に変換する方法はありますか?おそらくtypeofを使用していますか?ジェネリック型(<T>)の関数/クラス(Typescript)にジェネリック型の名前を取得する方法はありますか?</p> <pre><code>getData<T extends Entity>() { } </code></pre> <p>私は現在、任意の引数を受け入れない:

私はリフレクションを使用するC#の世界です。しかし、私はJavascriptを初めて使っていて、同等のものが何であるかはわかりません。

ありがとうございました。

+0

:クラスのgetData作品を想定し

、あなたのような何かを書くだろうか? –

+0

URL文字列を作成する必要があります。その部分はクラスTの名前です。そして、ジェネリック型のオブジェクトを返します。たとえば、Result です。 –

+0

'toString()'メソッドのオーバーライドはおそらく役に立ちますか? – kemsky

答えて

2

コンパイル時にタイプが消去されるため、いいえ。 neverには、typeパラメータを引数の位置で使用しない汎用関数があります。引数がない場合は、なぜあなたがそこにタイプが必要なのです

class NotSureThisIsReallyAGoodIdea { 
    static getData<T>(cls: new(...args: any[]) => T): T { 
     /* magic happens */ 
     const url = 'http://example.com/' + cls['name']; 
     return <T>undefined; 
    } 
} 

class SomeShape { 
    x: number; 
} 

let s = NotSureThisIsReallyAGoodIdea.getData(SomeShape); 
s.x; // OK 
+0

これは私のために働いた、ありがとう。 getData (タイプ:{新規():T;}){ let d = new type(); let name:string = d.getName(); } (コードサンプルをどのようにフォーマットするかわからない) –

関連する問題

 関連する問題