Ala*_*an2 16 angularjs typescript
我使用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;
};
}
Run Code Online (Sandbox Code Playgroud)
我还创建了这个界面:
interface IConfigService {
put(): ng.IHttpPromise<>;
}
Run Code Online (Sandbox Code Playgroud)
但是代码给我一个错误说:
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>'.
Run Code Online (Sandbox Code Playgroud)
bas*_*rat 19
使用
ng.IPromise<void>
Run Code Online (Sandbox Code Playgroud)
如果您没有声明返回类型并且不使用该接口,也可以让它隐式地为您输入.
这里也应该没有退货声明:
return defer.resolve();
Run Code Online (Sandbox Code Playgroud)
只是:
defer.resolve();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25394 次 |
| 最近记录: |