无法在 TypeScript 中映射

问题描述 投票:0回答:1

我目前正在学习教程,但我陷入了这个错误:

TS2345:“OperatorFunction”类型的参数不可分配给“OperatorFunction”类型的参数。 “对象”类型可分配给很少的其他类型。您的意思是使用“any”类型吗? 类型“Object”缺少类型“WorkerData”中的以下属性:项目、元、链接

WorkerData 是一个简单的接口,位于同一文件中:

export interface WorkerData {
  items: Worker[],
  meta: {
    totalItems: number;
    itemCount: number;
    itemsPerPage: number;
    totalPages: number;
    currentPage: number;
  }, 
  links: {
    first: string;
    previous: string;
    next: string;
    last: string;
  }
};

返回此错误的函数是这样的:

findAll(page: number, size: number): Observable<WorkerData> {
    let params = new HttpParams();
    params = params.append('page', String(page));
    params = params.append('limit', String(size));
    return this.http.get('/api/worker', {params}).pipe(
      map((userData: WorkerData) => userData),
      catchError(err => throwError(err)),
    )
  }

这个功能。应该返回带有 Worker 数组和一些元数据的 JSON。如果我将 map((userData: WorkerData) => userData) 更改为 map((userData: any) => userData), r 如果我将接口中的所有参数设置为不是 meccecary,它会起作用,但会返回如下所示的内容:

_Observable {
  source: _Observable {
    source: _Observable {
      source: [_Observable],
      operator: [Function (anonymous)]
    },
    operator: [Function (anonymous)]
  },
  operator: [Function (anonymous)]
}

如果有人好奇,该教程系列称为博客项目 V-09。也许这会有所帮助如果您需要更多信息,我会很高兴提供。如果需要的话我也可以将其发布到 git。预先感谢

javascript html angularjs typescript nestjs
1个回答
0
投票

默认的http.get方法不知道返回什么类型,所以尝试下面的代码,这是基于Angular官方文档的

return this.http.get<WorkerData>('/api/worker', { params }).pipe(
  map((userData: WorkerData) => userData),
  catchError(err => throwError(err)),
);

Angular 文档

© www.soinside.com 2019 - 2024. All rights reserved.