簡體   English   中英

Angular:將類型字符串返回到 catchError 但具有不同類型的 HTTP

[英]Angular: return type string into catchError but have HTTP with different type

我的 Observable 中的返回類型有問題。 在我的服務中,當我嘗試將字符串放入catchError時,我的foo()方法的返回類型出現錯誤。

服務.ts

foo(): Observable<string> { <=== PROBLEM HERE
  return this.httpService
    .postSomething()
    .pipe(
      catchError((error: HttpErrorResponse) => {
        return of('Error');
      })
    );
}

httpService.ts

postSomething(): Observable<ObjModel> {
  return this.httpClient.request('post', 'url', {body});
}

錯誤說:

foo(): Observable<string | ObjModel> {

問題是我只想返回一個 string ,否則我的foo()實現會返回一個錯誤,告訴我它需要一個string 或一個 objModel

感謝您的幫助。

您的 function foo()必須管理 2 個不同的案例

  1. http 調用中沒有發生錯誤,因此它返回postSomething()返回的任何內容,您將其聲明為Observable<ObjModel>
  2. http 調用中發生錯誤,因此它返回您在catchError中編碼的內容,即一個Observable<string> ,因為您返回of('Error') which is exactly an emitting a字符串的 Observable `

因此foo()可以返回Observable<ObjModel>Observable<strince> ,即它返回Observable<string | ObjModel> Observable<string | ObjModel> 這就是編譯器抱怨的原因。

問題是如果沒有錯誤,它就不會調用catchError並且實際上會返回Observable<ObjModel> 所以你還需要處理這種情況。

如果沒有錯誤,您的 foo() function 將返回

Observable<ObjModel>

類型,所以你不能聲明 foo() function 返回

foo(): Observable<string>

類型。

暫無
暫無

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

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