Ich habe einen Dienst, der $ http mit meinen Funktionen umschließt, die ein verzögertes Objekt zurückgeben.
Meine Schnittstelle:
export interface MyServiceScope {
get: ng.IPromise<{}>;
}
Meine Klasse:
export class MyService implements MyServiceScope {
static $inject = ['$http', '$log'];
constructor(private $http: ng.IHttpService,
private $log: ng.ILogService,
private $q: ng.IQService) {
this.$http = $http;
this.$log = $log;
this.$q = $q;
}
get(): ng.IPromise<{}> {
var self = this;
var deferred = this.$q.defer();
this.$http.get('http://localhost:8000/tags').then(
function(response) {
deferred.resolve(response.data);
},
function(errors) {
self.$log.debug(errors);
deferred.reject(errors.data);
}
);
return deferred.promise;
}
}
Die Zusammenstellung mit dem folgenden Fehler fehlschlägt:
myservice.ts(10,18): error TS2420: Class 'MyService' incorrectly implements interface 'MyServiceScope'.
Types of property 'get' are incompatible.
Type '() => IPromise<{}>' is not assignable to type 'IPromise<{}>'.
Property 'then' is missing in type '() => IPromise<{}>'.
Als Referenz here is the IPromise Definition von DefinitelyTyped. Der IQService.defer()
-Aufruf gibt ein IDeferred
-Objekt zurück, und dann gibt deferred.promise
IPromise-Objekt zurück.
Ich bin mir nicht sicher, ob ich die falschen Definitionen in meiner Schnittstelle verwende oder das verzögerte Objekt nicht auf die gleiche Weise zurückschicke. Jede Eingabe würde sehr geschätzt werden!
Sie können alle diese "überspringen. =; 'Zeilen auch –