gpt4 book ai didi

angular - 类型 'Observable>' 不可分配给类型 'Observable'

转载 作者:太空狗 更新时间:2023-10-29 17:18:55 28 4
gpt4 key购买 nike

我有一个包含以下内容的简单服务:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';

import 'rxjs/add/observable/throw';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class AddressService {

constructor(private http: Http) { }

getAnything = (): Observable<Response> => {
return this.http.get('https://my_api.com')
.map(this.handleSuccess)
.catch(this.handleError);
}

handleError = (error: Response): Observable<Response> => {
return Observable.throw(error || 'Server Error');
}

handleSuccess = (response: Response): Observable<Response> => {
let body;

if (response.text()) {
body = response.json();
}

return body || {};
}
}

它工作得很好,直到我将 Typescript 从 2.3.4 升级到 2.4.1。

现在,升级后,我遇到了奇怪的错误:

Type 'Observable<Response | Observable<Response>>' is not assignable to type 'Observable<Response>'

这里有什么意义? TS 2.4.x 中有哪些更改会导致我的应用停止正常运行?

最佳答案

TypeScript 2.4引入了更好的泛型检查。它突出显示了您的代码中应修复的错误。

例如handleSuccess的返回类型与返回的内容不匹配;它返回一个匿名对象,但被输入为返回 Observable<Response> .因为它与 map 一起使用,您最终得到一个类型为 Observable<Response | Observable<Response>> 的组合可观察对象.

您看到的错误是真实的,应该修复。

关于angular - 类型 'Observable<Response | Observable<Response>>' 不可分配给类型 'Observable<Response>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45092484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com