为什么我收到一个“ Observable <{}>类型无法分配给'Observable <object [] =“”>”错误的信息?

时间:2019-04-19 20:15:20

标签: angular typescript ionic3

我正在使用Ionic编写购物清单应用程序,目前正在尝试将mongoDB中的信息与Ionic应用程序集成。

但是,当我运行ionic serve时,浏览器中唯一加载的是Cannot GET /。我不确定代码中哪里出了错。

编译时出现错误

  

类型Observable<{}>无法分配给类型Observable<object[ ]>

我认为问题出在getItems函数中。任何帮助将不胜感激!

getItems(): Observable<object[]> {
  return this.http.get(this.baseURL + '/api/groceries').pipe(
    map(this.extractData),
    catchError(this.handleError)
  );
}

1 个答案:

答案 0 :(得分:1)

您需要确保this.extractData的类型与返回函数getItems(): Observable<object[]>相同。
这意味着,如果您将从该api调用中获取对象数组,则需要将它们都设为: Array<{}>

为获得最佳实践,您可以为数据类型创建一个接口,将其添加为可观察的变量类型,如下所示:

export interface CustomData {
        COUNT: number;
        NAME: string;
}

您的变量为:
public extractData: CustomData;

函数返回为:
getItems(): Observable<CustomData> {

如果您不想执行任何操作,则可以将函数的类型更改为any,如下所示:getItems(): Observable<any> {