2016-04-28 3 views
1

既存のバックエンドコードの新しいフロントエンドとして使用するために、Angular2/Typescriptを使用したサンプルプロジェクトをビルドします。jsonのTypeScriptコンストラクトクラス

種類を作成し、JSONの一部を使用することを検討する能力は、このような型指定されたクラスとしてバックエンドが提供するオブジェクトのように、私は本当に:

module DomainObjects { 
    export class SomeDomainObject { 
    constructor(attr1:string, attr2:number) {...} 
    ... 
    } 
} 

バックエンドで返されるJSONコードのいくつかはあります非常に大きいので、私はコンストラクタで膨大な量のパラメータを扱う必要はありません。さて、ちょうどいくつかのチェックを行う(またはしない)コンストラクタへの単一のパラメータとしてJSONオブジェクトを渡すだけです。一方、私はJSONオブジェクトに直接アクセスしたいと思います。この可能性のようなものである:この

{{myobject.color}} 

のようなテンプレートで

myobject:SomeDomainObject; 
... 
this.myobject = new SomeDomainObject({id:10,color:'green'}); 

とアクセスMyObjectにのような別の参照を持つことなく、{{}} myobject.json.color

答えて

1

あなたがモデル化することができますインターフェースを持つJSONデータ(クラスではなく)次に、受け取ったJSONを(コンストラクターを呼び出す代わりに)単純に割り当てることができます。

検証のためには、受信したJSON構造が実際にインターフェイスに記述したタイプと等しいかどうかを確認する検証関数を作成する必要があります。また、検証を構築します。また、そのステップを実行するためにJSONスキーマと、適切な検証ライブラリを使用することができます

function toTypedData(input: any):SomeDomainObject { ... } 

のように署名して機能を割り当てることができます。

+0

ありがとうございます。私はかなり問題を解決すると思う。 Javaの世界から、私はインタフェースが何であるかというやや異なる考え方を持っていました。 – Matt

+0

@ user3802631インターフェースを使用する唯一の問題は、JSONがメソッドを持つオブジェクト(例えば 'SomeDomainObject'にメソッドがある場合など)を表す場合、それらのメソッドは存在すると思われるオブジェクトには存在しません。 –

関連する問題