如何在 angular 7 应用程序中使用 rxjs 中的地图运算符?

How to use the map operator in rxjs within an angular 7 app?

我的代码可以编译并且一切正常,但是我的 IDE(Visual Studio 代码)显示以下错误消息并且我无法部署我的应用程序(使用 ng build --prod ):

ERROR in src/app/training/training.service.ts(61,46): error TS2339: Property 'name' does not exist on type '{}'. src/app/training/training.service.ts(62,50): error TS2339: Property 'duration' does not exist on type '{}'. src/app/training/training.service.ts(63,50): error TS2339: Property 'calories' does not exist on type '{}'.

我这样导入地图运算符:

import { map, take } from 'rxjs/operators';

并像这样使用它:

...
    .snapshotChanges()
    .pipe(
      map(docArray => {
        return docArray.map(doc => {
          return {
            id: doc.payload.doc.id,
            name: doc.payload.doc.data().name,
            duration: doc.payload.doc.data().duration,
            calories: doc.payload.doc.data().calories
          };
        });
      })
    )
...

我的界面是这样的:

export interface Exercise {
id: string;
name: string;
duration: number;
calories: number;
date?: Date;
state?: 'completed' | 'cancelled' | null;

}

我做错了什么?

要愚弄 Typescript,您可以这样做:

doc => {

    let result: any = doc.payload.doc.data();
          return {
            id: doc.payload.doc.id,
            name: result.name,
            duration: result.duration,
            calories: result.calories
          };