打字稿1.8到2.5错误类型IPromise&lt; {}&gt;&#39;不能分配类型&#39; IPromise <iweberrors []>

时间:2018-01-27 18:36:24

标签: angularjs typescript

谁能告诉我这有什么问题?我看到我应该添加.topromise()或使用then,但这不起作用。

getWebErrors(): ng.IPromise<Array<IWebErrors>> {

        var defer = this.q.defer();

        this.http({
            url: `/api/v1/admin/GetWebErrors`,
            method: "GET"
        })
            .success((response: IQuote) => {
                defer.resolve(response);
            })
            .catch(reason => {
                defer.reject();
            });

        return defer.promise;
    }

1 个答案:

答案 0 :(得分:0)

在较新版本的TS中,类型检查变得更加严格。在这种情况下,原因是如果您没有为defer指定类型参数,则默认值为{}。简单的解决方案是为defer指定类型参数,也为http

指定
// Assumed missing types
interface IQuote extends Array<IWebErrors> {}
interface IWebErrors {}

getWebErrors(): ng.IPromise<Array<IWebErrors>> {
    var defer = this.q.defer<Array<IWebErrors>>();

    this.http<IQuote>({
        url: `/api/v1/admin/GetWebErrors`,
        method: "GET"
    })
    .success((response) => {
        defer.resolve(response);
    })
    .catch(reason => {
        defer.reject();
    });

    return defer.promise;
}