簡體   English   中英

TypeScript 3.1.6 Angular 7 Rxjs6使用catchError在編輯器中顯示錯誤,但代碼正確運行

[英]TypeScript 3.1.6 Angular 7 Rxjs6 Using catchError shows error in editor but the code runs correctly

如果出現and錯誤,我試圖從數據服務返回自定義錯誤。

public getRoles(): Observable<Array<Role> | CustomError> {

    return this.http.get(this.urlService.getRoles)
        .pipe(
            map((res: any) => {
                    let roles = new Array<Role>();
                    res.Result.forEach(item => {
                        roles.push(new Role().fromItem(item));
                    });

                    return roles;
                }
            ),
            catchError(err => {
                let customError = new CustomError();
                customError.errorNumber = err.status;
                customError.message = err.message;
                return throwError(customError);
            })
        );
}

上面的代碼以我期望的方式自動運行,但是文本編輯器指示以下錯誤:

(TS)類型“可觀察<{} | Role []>'不能分配給'ObservableRole [] |類型。 CustomError>。

輸入'{} | Role []'不可分配給'Role [] |類型。 CustomError”。

類型“ {}”不可分配給類型“角色[] | CustomError”。

類型“ {}”不可分配給類型“ CustomError”。

類型“ {}”中缺少屬性“ errorNumber”

誰能告訴我解決該問題我需要做什么?

事實證明,這不是代碼中我遇到catchError問題的唯一地方。 我有一個簡單的攔截器,它將HTTP錯誤記錄到控制台。 (我正在嘗試如何使用攔截器)。

public intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    console.log(`ErrorInterceptor - ${req.url}`);

    return next.handle(req)
        .pipe(catchError(err => {
            console.log(err);
            return throwError(err);
        }));
}

通過這段代碼,我得到了一組非常相似的消息。 我是否正確使用catchError和throwError?

是的,您需要導入throwError類嗎?

import {Observable, throwError} from 'rxjs';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM