2016-12-15 104 views
1

有人可以幫我理解這一點。我學習Angular 2的教程使用界面通過Observable存儲日期。即:.map((response:Response)=> response.json())。Angular 2接口屬性映射

我發現的一個問題是我的接口屬性定義必須完全匹配json屬性。即;如果json propety是_custNum,我的界面必須使用相同的確切名稱_custNum。如果我將名稱更改爲'custNum',它將不會映射。這只是接口的規則?

示例代碼:

export interface ICustSearch { 
    _custNum: string; 
    _custName: string; 
    _address: string; 
    _city: string; 
    _state: string; 
    _zip: string; 
    _county: string; 
    _phone: string; 
} 

return this._http.get(APIRoutes.custSearchLocal, {headers: headers}) 
      .map((response: Response) => <ICustSearch[]> 
         response.json()) 
      .catch(this.handleError); 

現在如果我在上面的界面更改屬性「_custNum」到「custNum」地圖將無法在客戶數量。有沒有解決這個問題的方法。另外,爲什麼使用接口與類來映射json對象,有什麼優勢?

在此先感謝。

回答

0

這兩個問題都與Angular和TypeScript無關。

一般來說,它是TypeScript中的強制轉換機制,用於驗證任何Object遵循提供的約定(接口/類)。你可以使用類,但是如果你的類/接口已經聲明瞭方法,提供的對象必須實現它們(你絕對不能用JSON來做),否則TypeScript編譯器將不允許你進行類型轉換。技術將任何對象轉換爲類(即使用對象,使用構造函數,設置器,轉換器來擴展類實例)。

而且可以肯定你能避免類/接口和只使用any型...

是的,沒有內置的方法鑄有不同名稱的屬性,除非你執行/找到實現,這可能成爲另一個轉換器/工廠。

與JPA Domains方法爲每個Interface/Class屬性分配別名列表相似,但大部分時間API更改並不頻繁,您還可以在TypeScript Interface聯機生成器中找到大量的JSON。

+0

A. Tim:謝謝你的迴應。對不起,將它標記爲Angular,我對Angular和Typescript非常陌生。我將繼續將我的問題標記爲Typescript – David