2017-01-25 5 views
0

強く型付けされた配列のコンストラクタ関数をメソッドに渡そうとしています。配列のコンストラクタ関数

方法は次のようになります。

foo<T>(clazz: {new(): T[]}) { 
    // ... 
} 

しかし、私は、このメソッドを呼び出すことができませんでした。私はfoo<MyClass>(MyClass[])を試しましたが、それはちょうどコンパイラエラーを作成します。

MapUtilsクラスhereを使用してJSON配列を強力な型付きオブジェクト配列にデシリアライズしようとしています。

私は、次のJSONを受け付けております:

[ 
    {name: "name1", ...}, 
    {name: "name2", ...} 
] 

そして、MapUtils.deserializeを使用して、私は結果としてこれをしたい:

[ 
    <Person> { name: "name1", ... }, 
    <Person> { name: "name2", ... } 
] 
+1

コンストラクタが唯一のインスタンスを作成することができ、それはアレイを作成できません。あなたは何をしようとしているのより多くのコードを表示できますか? –

+0

@NitzanTomer:更新(最後の段落) –

+0

を参照してください。その投稿には[Mapping Arrays](http://cloudmark.github.io/Json-Mapping/#mapping-arrays)の部分があります。そうでない場合は、取得したjsonの具体例と変換先のクラスを追加してください。 –

答えて

0

私はこのMapUtilsものを使用していないが、あなたが試すことができますこれを行うには:

MapUtils.deserialize(Array, JSON_DATA); 

これがうまくいかない場合は、単純に繰り返すことができますアレイ上及びMapUtils.deserializeを使用し、各項目について:

let arr = [] as Person[]; 
JSON_DATA.forEach(item => arr.push(MapUtils.deserialize(Person, item))); 

またはArray.map方法使用:

let arr = JSON_DATA.map(item => MapUtils.deserialize(Person, item));