我使用 Typescript 创建了一个服务:
class ConfigService implements IConfigService {
public admin = {};
public adminBackup = {};
public user = {};
public loaded = false;
constructor(
private $http: ng.IHttpService,
private $q: ng.IQService
) {
}
static $inject = [
'$http',
'$q'
];
put = ():ng.IHttpPromise<> => {
var defer = this.$q.defer();
if (angular.equals(this.admin, this.adminBackup)) {
return defer.resolve();
} else {
this.$http({
data: {
adminJSON: JSON.stringify(this.admin),
userJSON: JSON.stringify(this.user)
},
url: '/api/Config/Put',
method: "PUT"
})
.success(function (data) {
this.adminBackup = angular.copy(this.admin);
this.userBackup = angular.copy(this.user)
return defer.resolve();
});
}
return defer.promise;
};
}
我还创建了这个界面:
interface IConfigService {
put(): ng.IHttpPromise<>;
}
但是代码给我一个错误提示:
Error 3 Cannot convert 'void' to 'ng.IHttpPromise<any>'.
Error 4 Cannot convert 'ng.IPromise<{}>' to 'ng.IHttpPromise<any>':
Type 'ng.IPromise<{}>' is missing property 'success' from type 'ng.IHttpPromise<any>'.
最佳答案
使用
ng.IPromise<void>
如果您不声明返回类型并且不使用该接口(interface),您也可以让它为您隐式键入它。
这里也不应该有返回语句:
return defer.resolve();
只是:
defer.resolve();
关于angularjs - 对于只返回成功的 $http 调用,我应该使用哪种类型的 Typescript 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24972285/