2017-08-09 3 views
0

私は最近、TypeScriptを使って作業を始め、TypeScriptが何らかの機能を提供しているのか不思議です。私は、次の形式でのデータの要求を受け入れるWebサービスに手を差し伸べるています:TS原則に違反することなく「ラップされた」JSONオブジェクトを定義する良い方法はありますか?

{ 
    "data": { 
     "country": "US" 
     "customerType": "Internal" 
     "customer": "ABC" 
    } 
} 

あなたが見ることができるように、実際のJSON要求は、それによって私を定義するために私を必要とし、「データ」オブジェクトに「ラップ」されます以下のようなクラス:

export class CalculatorRequest { 
    data: CalculatorRequestData 
} 

export class CalculatorRequestData { 
    country: string; 
    customerType: string; 
    customer: string; 
} 

「CalculatorRequestData」タイプの二次、内部データクラスを持ってすることを避けるためにどのような方法がありますか?

私は、内部クラスが不要になることを避けるように要求することができますが、それ以上の効率的なオプションがあるかどうかを確認したいと思います。

ありがとうございます!

+1

私はあなたがそれをやっている理由はありません。データプロパティはおそらく、バックエンドがその応答を構成する方法に過ぎません。フロントエンドには、他のサービスのリクエストを行い、生の応答データを返すだけのバックエンドサービスが必要です。要求しているサービスは、このデータを必要な方法で使用する必要があります。 'CalculatorRequestData'クラスのようにオブジェクトを構築してください。 – lexith

+1

良い点!私はどこから来ているのか理解しています。TypeScriptがこのような状況でどのようなオプションを提供しているのか、たとえばAmyの答えを見たいと思っていました。提案ありがとう! – slashp

答えて

1

ジェネリックを使用すると、 'データ'オブジェクトのみが作成されますが、「要求」オブジェクトは1つだけ必要になります。

export class ApiRequest<T> { 
    data: T 
} 

export class CalculatorRequestData { 
    country: string; 
    customerType: string; 
    customer: string; 
} 

// no extra request object needed, regardless of how many requests you have 
export class FoooData { 
    foo: string; 
    bar: number; 
} 
+0

まさに私が探していたものです。ありがとうエイミー! – slashp

関連する問題