2016-07-29 12 views
0

In einem TypeScript-Schnellstart gibt es einen Teil, der Object in eine Klasse umwandelt. Siehe den vollständigen Code unten.TypeScript - Casting

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

Wie funktioniert das? Gibt es dafür eine Spezifikation? Geschehen im Hintergrund oder zwingt es einfach die Besetzung, die Verantwortung, dass alle Felder gesetzt sind und vom richtigen Typ, auf den Autor dieser Zeile?

@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); 
    } 

Antwort

1

Ja, es ist eine Spezifikation, die here

Zusammengefasst verfügbar:

Typ Kompatibilität in Typoskript basiert auf strukturellen Subtyping. Strukturelle Typisierung ist eine Art und Weise Arten beziehen sich nur auf ihre Mitglieder

Klassen

Wenn zwei Objekte einer Klasse-Typ zu vergleichen, nur Mitglieder der Instanz verglichen werden. Statische Member und Konstruktoren wirken sich nicht auf die Kompatibilität aus. So

, wenn sie von <A>b Gießen, wird der Compiler überprüfen, ob (nicht optional) Eigenschaften von A sind nicht in der Art der b fehlt.

Wenn b vom Typ any ist, kann es zu allem umgewandelt werden, wie der Name schon sagt.

Letzteres ist genau der Fall der von dem Wert von response.json() welchen Typ any nach den documentation

Also ja ist, die „Verantwortung, dass alle Felder festgelegt sind und von der richtigen Art [ist] auf dem Autor von dieser Linie "