如何修复(错误:任何)=>可观察<any>不可分配?



saveExpense()方法中,当传递错误处理catchError (this.handleError<any>('Add Expense', []))时,此方法将高亮显示,并显示错误:Argument type (error:any)=>Observable<any> is not assignable to parameter type (err:any, caught:Observable<T>)=>never。如何解决

saveExpense(userid, oExpense) {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': `${this.jwtToken}`
})
};
return this.http.post(`http://localhost:5555/api/expense/${userid}`, JSON.stringify(oExpense), httpOptions).pipe(
tap(
(response: ServerMessage) => console.log(response)
),
catchError(this.handleError('Add Expense', []))
);
}
private handleError<T>(operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
console.error(error);
console.log(`${operation} failed: ${error.message}`);
return of(result as T);
};
}

该语句意味着catchError()期望被赋予一个签名为(err:any, caught:Observable<T>)=>never的函数作为参数。

传递给catchError()的函数的签名(参数和返回类型(是什么?

试试这个:

import { Observable, throwError } from 'rxjs';
saveExpense(userid, oExpense) {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': `${this.jwtToken}`
})
};
return this.http
.post(`http://localhost:5555/api/expense/${userid}`, JSON.stringify(oExpense), httpOptions)
.pipe(
tap((response: ServerMessage) => console.log(response)),
catchError((err) => this.handleError(err)),
);
}
private handleError(errorResponse): Observable<any> {
console.log('error', errorResponse);
return throwError(errorResponse);
}

我有一个关于如何使用拦截器的完整示例:https://github.com/dedd1993/ngx-admin/blob/master/src/app/%40core/http/http.interceptor.ts

最新更新