Как использовать оператор карты в rxjs в приложении angular 7? - PullRequest
0 голосов
/ 14 февраля 2019

Мой код компилируется, и все работает нормально, но моя IDE (код Visual Studio) показывает следующее сообщение об ошибке, и я не могу развернуть свое приложение (с помощью ng build --prod):

ОШИБКА в src / app / training / training.service.ts (61,46): ошибка TS2339: Свойство «имя» не существует для типа «{}».src / app / training / training.service.ts (62,50): ошибка TS2339: свойство «duration» не существует для типа «{}».src / app / training / training.service.ts (63,50): ошибка TS2339: свойство 'calories' не существует для типа '{}'.

Я импортирую оператор карты следующим образом:

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;

}

Что я делаюне так?

1 Ответ

0 голосов
/ 14 февраля 2019

Чтобы обмануть Typescript, вы можете сделать это:

doc => {

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