Angular4和TypeScript编译错误TS2453

时间:2017-09-30 12:55:53

标签: angular typescript

我无法构建我的Angular4项目,因为我真的不明白这个错误。我有来自@angular的我的导入,如Response,Headers,Http。当我尝试构建项目时,我收到此错误:

  

TS2453:类型参数的类型参数' T'无法从使用中推断出来。考虑明确指定类型参数。     输入参数候选者'响应'不是有效的类型参数,因为它不是候选者的超级类型'响应'。       财产类型'类型'是不相容的。         输入' string'不能分配给' ResponseType'。

它指的是这段代码:

public getPatients(): Observable<any> {
    //noinspection TypeScriptValidateTypes
    return this.http.get(AppSettings.API_ENDPOINT + 'patient', { headers: this.getHeaders() })
        .map((res:Response) => res.json())
        .catch((error) => Observable.throw(error.json().error || "Server error"));
}

我找到了一个使用导入的解决方法,我在这些主题中添加了所有提及但它仍然没有帮助。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,我发现问题在于我没有输入正确的东西。

尝试使用这些:

import {Http, Response} from "@angular/http";
import 'rxjs/add/operator/map'
import 'rxjs/add/operator/catch';
import {Observable } from "rxjs/Observable";

答案 1 :(得分:0)

如果有这样的代码:

editItem(item: Item) {
    return this.http.put(`${this.BACKOFFICE_URL}`, item, this.getOptions())
        .map((res: Response) => {
            return res.status === 200 ? res.json() : {};
        })
        .catch((error: any) => {
            return Observable.throw(error);
        })
}

我在代码中看到的唯一区别是我没有为函数添加返回类型。