[英]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 個不同的案例
postSomething()
返回的任何內容,您將其聲明為Observable<ObjModel>
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.