angular - 更新 Angular 和 RxJS 5 到 6 后编译错误
问题描述
将库更新到新的 Angular 6 和 RxJS 6 后,我遇到了问题。
我有RouteService
作为服务工作的课程。它用于HttpClient
从远程 API 获取数据。更新后,当我尝试编译项目时遇到一些奇怪的错误。
这是我的服务类:
import {Injectable} from '@angular/core';
import {HttpClient} from "@angular/common/http";
import {Observable} from "rxjs/Rx";
import {catchError} from 'rxjs/operators';
export interface Route {
name:string;
route_id:number;
created_at:Date;
}
@Injectable()
export class RouteService {
constructor(private http:HttpClient) {}
getRoutesList():Observable<Route[]> {
return this.http.get<Route[]>(`http://localhost:8090/api/routes`)
.pipe(catchError(ServiceUtil.handleError));
}
}
这是handleError方法:
import {HttpErrorResponse} from '@angular/common/http';
import {ErrorObservable} from 'rxjs/observable/ErrorObservable';
export module ServiceUtil {
export function handleError(error:HttpErrorResponse) {
if (error.error instanceof ErrorEvent)
console.error('An error occurred:', error.error.message);
else
console.error('An error occurred:', JSON.stringify(error.error));
return new ErrorObservable(error.error);
}
}
在ng serve
我收到错误后:
ERROR in src/app/service/route-service/route.service.ts(21,5): error TS2322: Type 'Observable<{} | Route[]>' is not assignable to type 'Observable<Route[]>'.
Type '{} | Route[]' is not assignable to type 'Route[]'.
Type '{}' is not assignable to type 'Route[]'.
Property 'includes' is missing in type '{}'.
Failed to compile.
我究竟做错了什么?我的代码是否有问题导致新版本出错但在旧版本中工作?还是有什么改变?
解决方案
正如错误所说。
将您的方法声明更改为:
getRoutesList():Observable<Route[] | {}>
推荐阅读
- android - 在 Android 上使用 Google 的 MLKit 实现数字识别器
- docker - Docker 构建依赖于主机 Ubuntu 版本而不是实际的 Docker 文件
- javascript - 将数组元素添加到现有的对象数组中
- nltk - 为什么 Sacrebleu 对短句返回零 BLEU 分数?
- veins - TraCIScenarioManagerForker vs Venes-launchd
- python - 如何在python中从日期时间到时间(HH:MM:SS)传递熊猫数据框列
- node.js - 即使密钥存在于数据库中,Redis hmget 返回 null
- excel - Excel - 数据透视表 - 显示前 10 名,而小计显示所有记录的总和
- javascript - 如何在 django 模板中接收上下文数据并在 javascript 中使用它
- python - Python Plotly Funnel 中看不到数字