2016-05-16 3 views
2

Ich möchte die Verwendung von <any> in meinem Typoskript angularjs Code vermeiden. Deshalb würde ich gerne wissen, ob jemand weiß, welcher Klassentyp für die $ http get/post/etc verwendet werden soll. Antwort?

Beispiel: Stück Code Im folgenden möchte ich die <any> mag Klasse

search() { 
    this.$http.get('https://maps.googleapis.com/maps/api/geocode/json', {params: {address: this.$scope.searchTerm}}) 
    .success((response: any) => { 
     this.$scope.results = response.results; 
    }).error((response: any) => { 
     console.error("Error calling the server"); 
     }); 
    }; 

PS statt eingegeben werden:..

$ this scope = MyScopeInterface und diese $ scope.results = Google. maps.GeocoderResult

Antwort

1

Sie sollten es nicht manuell eingeben müssen. Typescript-Typ-Inferenz sollte in der Lage sein, den Rückgabetyp von .get() und den Typ Ihres response-Parameters entsprechend zu bestimmen.

Falls nicht, ist der Typ IHttpPromise<T>. Mehr Informationen finden Sie unter angular.d.ts type declaration

+0

Ich schreibe und kompiliere meinen Code in Webstorm. Scheint, dass dieser Compiler den Rückgabetyp nicht bestimmen kann (Fehler: (77, 40) TS2339: Eigenschaft 'Ergebnisse' existiert nicht für den Typ '{}'.). Immer noch versuchen, dann in meinem Fall, um herauszufinden, was soll sein (?) –

+0

'IHTTPPromise ' erstreckt 'iPromise >' was bedeutet, dass es ein Versprechen ist eine HTTP-Antwort arg enthält, die selbst einige Daten 'enthält, ist ' als die Nutzlast. '' ist der Typ dieser Nutzlast, also alles, was vom Server zurückgegeben wird. [Die Geocodierungs-API-Seite] (https://developers.google.com/maps/documentation/geocoding/intro#GeocodingResponses) enthält eine Beispiel-JSON-Antwort. Sie könnten eine Schnittstelle erstellen, die mit diesem Objekt übereinstimmt, oder eine andere Person, die sich bereits in einer Geocodierungszugriffsbibliothek befindet. – Paarth

+0

ich es tat, löste mein Problem: '/// Modul Dienste { Export-Schnittstelle IGeocoder { Ergebnisse: google .maps.GeocoderResult []; Status: google.maps.GeocoderStatus; } } ' –

Verwandte Themen