Я посмотрел документы RxJs и выполнил поиск этого и не могу (удивительно) найти примеры того, что я пытаюсь сделать.
По сути, у меня есть две службы. Один сервис использует другой сервис и должен отобразить ответ потребляющего сервиса на другой тип.
Пример кода из приложения Angular:
@Injectable()
export class EmployeesService {
BASE_URL = 'http://foo.bar.com/api/getEmployees';
constructor(private http: HttpClient) {
}
get(): Observable<IEmployee[]> {
return this.http.get<IEmployee[]>(this.BASE_URL);
}
}
@Injectable()
export class MyEmployeeService {
constructor(private svc: EmployeesService) {
}
get(): Observable<IMyEmployee[]> {
return this.svc.get().map(
(employees:IEmployee[]) => employees.forEach(employee => this.mapEmployeeToMyEmployee(employee))
);
}
private mapEmployeeToMyEmployee(employee: IEmployee): IMyEmployee {
return {
... simple property mapping to transform IEmployee to IMyEmployee
};
}
}
Однако в «MyEmployeeService» компилятор Typescript жалуется: «Возвращаемый тип выражения Observable (void) нельзя назначить типу Observable (IMyEmployee []).
Даже если бы я добавил операторы return в операцию карты, я все равно получаю те же жалобы. Что я тут не так делаю?