[英]Rxjs catchError casuses TypeScript type error
我有一个来自 Angular 的例子。 有两个接口。 一个将status
定义为字符串。 第二个定义status
值。 问题出在后一个,因为catchError
function 没有返回正确的类型:
export interface ThisInterfaceIsOk {
status: string;
}
export interface ThisInterfaceCausesProblem {
status: "OK" | "PROBLEM";
}
@Injectable({
providedIn: 'root'
})
export class RegisterService {
constructor(private httpClient: HttpClient) {
}
public registerValid(): Observable<ThisInterfaceIsOk> {
return this.httpClient.get('http://example.com/api').pipe(
map(response => response as ThisInterfaceIsOk),
catchError(() => of({status: "WHATEVER"}))
);
}
public registerInvalid(): Observable<ThisInterfaceCausesProblem> {
return this.httpClient.get('http://example.com/api').pipe(
map(respone => respone as ThisInterfaceCausesProblem),
catchError(() => of({status: "OK"}))
);
}
}
错误就像TS2322 Type Observable<ThisInterfaceCausesProblem|{status: string}> is not assignable to type Observable<ThisInterfaceCausesProblem>
但我真的不明白为什么。
我相信catchError(() => of({status: "OK"}))
给出的返回类型为{ status: string }
。 尝试用这个替换它: catchError(() => of({status: "OK" as const}))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.