angularjs - 对于只返回成功的 $http 调用,我应该使用哪种类型的 Typescript 返回值?

标签 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;
    };

}

我还创建了这个界面:

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/

相关文章:

javascript - 如何拒绝 NativeScript 上的 promise - Angular 2

javascript - 在哪里可以找到 beta Office.js 的 typescript 引用?

javascript - 如何在 Angular 中应用过滤器

javascript - AngularJS - ngClick 上未调用 Controller 方法 - 无错误

javascript - angular.js - 从数组设置 farbricjs Canvas 的宽度和高度

forms - 如何验证/限制 ionic 形式的数字输入?

javascript - 在angularjs中动态设置过滤器

javascript - 什么会导致 setTimeout(callback, 0) 的回调延迟

reactjs - 如何从继承类覆盖 React.Component 状态类型?

typescript - 限制函数参数的可能值