Rxjs 如何修改对接口的http响应?

Rxjs 如何修改对接口的http响应?,rxjs,observable,angular8,Rxjs,Observable,Angular8,我有一个界面: export interface Device { id: string; name: string } 我用额外的数据模拟http响应: import { Injectable } from '@angular/core'; import { Device } from './device.model'; import { Observable, timer } from 'rxjs'; import { mapTo } from 'rxjs/operators';

我有一个界面:

export interface Device {
  id: string;
  name: string
}
我用额外的数据模拟http响应:

import { Injectable } from '@angular/core';
import { Device } from './device.model';
import { Observable, timer } from 'rxjs';
import { mapTo } from 'rxjs/operators';
const devices = [
  {
    id: '1',
    name: 'device1',
    serial: 'fdfd'

  },
  {
    id: '2',
    name: 'device2',
    serial: 'fdfd'
  },
];
@Injectable({
  providedIn: 'root'
})
export class DevicesDataService {

  constructor() { }
  getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices));
  }
}
问题是,返回的是带有3个字段的响应

我如何返回与接口匹配的响应,使可观察对象只包含2个字段


我想调用getDevices方法,并使用id为、仅名称字段的设备对象数组进行观察。

恐怕您必须手动操作

getDevices(): Observable<Array<Device>> {
    return timer(200).pipe(mapTo(devices),
    map(arr=>arr.map(({name,id})=>({name,id})));
  }

相关:它对我不起作用,我得到错误TS2322:类型“Observable”不可分配给类型“Observable”。结果是什么?你看我没有任何结果,我只是复制粘贴你的代码,在apps/marketplace/src/app/devices/state/devices data.service.ts25,5:错误TS2322:类型“Observable”不可分配给类型“Observable”。类型“{name:any;id:any;}”缺少类型“Device[]”中的以下属性:length、pop、push、concat和其他26个属性。apps/marketplace/src/app/devices/state/devices data.service.ts25,51:错误TS2339:类型“{id:string;name:string;serial:string;}[]”上不存在属性“name”。apps/marketplace/src/app/devices/state/devices data.service.ts25,57:错误TS2339:类型“{id:string;name:string;serial:string;}[]”上不存在属性“id”。