2016-07-29 68 views
0

在一個TypeScript快速入門中,有一部分將Object投射到某個類。請參閱下面的完整代碼。TypeScript - 鑄造

.map(res => <RegisteredApplicationModel> res.json()) 

這是如何工作的?有沒有一些規範?在背景中發生的任何事情,還是僅僅是強制演員陣容,將所有領域的責任和正確的類型放在作者身上?

@Injectable() 
export class RegisteredApplicationService { 
    private GET_APPLICATIONS_URL = "/registeredApplications/list"; 
    private REGISTER_APPLICATION_URL = "/registeredApplications/register"; 

    constructor (private _http: Http, private _constants: Constants) {} 

    registerApplication(application:RegisteredApplicationModel) { 
     let headers = new Headers(); 
     let options = new RequestOptions({ headers: headers }); 
     headers.append('Content-Type', 'application/json'); 
     headers.append('Accept', 'application/json'); 

     let body = JSON.stringify(application); 

     return this._http.put(this._constants.REST_BASE + this.REGISTER_APPLICATION_URL, body, options) 
      .map(res => <RegisteredApplicationModel> res.json()) 
      .catch(this.handleError); 
    } 

回答

1

是有一個規範是可用的here

總結:在打字稿

類型兼容性是基於結構亞型。結構類型是僅僅涉及其成員基於

當比較類類型的兩個對象類型中的一種方式,只有實例的成員進行了比較。靜態成員和構造函數不影響兼容性。

所以,從<A>b鑄造時,編譯器會檢查的A(非可選)屬性不會在b類型缺失。

如果bany類型,則可以將其轉換爲任何內容,如名稱所示。

後者也正是response.json()值根據documentation

所以,是的,「責任,所有字段設置和正確類型的哪種類型any的情況[是]在作者那條線「