2016-05-14 15 views
0

これはTypeScript map function to change property typeのフォローアップの質問です。TypeScriptはクラスマッピングオブジェクトに文字列名を動的に生成します

私は

class A { } 
class B { } 
var var1 = [{ path: "aa", comp: "A" }, { path: "b", comp: "B" }]; 

プログラムによってこの

var nameToClassMapping = { 
    A: A, 
    B: B 
}; 

のようなマッピングオブジェクトを生成するのではなく、それをハードコーディングする方法はありますが、次のしている場合は?

答えて

1

あなたはそれを行うためにa decoratorを使用することができます。

var nameToClassMapping = {}; 

function myDecorator(target: any) { 
    nameToClassMapping[target.name] = target; 
} 

@myDecorator 
class A { } 

私はそれをテストしていませんが、それは仕事、または少なくともあなたの道を与える必要があります。

+0

@myDecoratorは各クラスAとBで使用されますか? nameToClassMappingのスコープは何ですか?少し説明できますか?ありがとう、 – Shawn

+0

はい、マップすることができるようにするすべてのクラスの前に、このデコレータを使用する必要があります。デコレータは単に実行される関数であり、その後ろのクラスをパラメータとして受け取ります。公式文書への私の質問のリンクは、始めるのに適しています。 –

+0

答えをありがとう。 – Shawn

関連する問題