繁体   English   中英

Rxjs catchError 原因 TypeScript 类型错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM