遅延オブジェクトを返す関数で$ httpをラップするサービスがあります。
マイインタフェース:
export interface MyServiceScope {
get: ng.IPromise<{}>;
}
マイクラス:、参考のため
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<{}>'.
DefinitelyTypedからhere is the IPromise定義:
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;
}
}
コンパイルが次のエラーで失敗しています。 IQService.defer()
コールはIDeferred
オブジェクトを返し、deferred.promise
はIPromiseオブジェクトを返します。
インターフェイスで間違った定義を使用しているのか、同じ方法で遅延オブジェクトを返さないのか分かりません。どんな入力も大歓迎です!
これをすべてスキップすることができます。 =; '行も –