2017-08-09 22 views
0

我最近開始使用TypeScript,遇到了一個問題,我很好奇,如果TypeScript提供任何設施。我伸手它接受數據的請求在以下格式的Web服務:有沒有更好的方式來定義一個「包裝的」JSON對象而不違反TS原則?

{ 
    "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在這種情況下提供了什麼樣的選擇,例如下面的艾米的答案。感謝您的建議! – slashp

回答

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

相關問題