合并接口和新键:函数参数的值对象

时间:2017-07-28 09:30:25

标签: javascript typescript interface

我有一个我搜索过的Firebase个对象列表,然后我想对这个对象做各种各样的事情。我面临的问题是Firebase返回的对象比我想要的界面更复杂。我的界面名为PlaceOnMap,如下所示:

export interface Location {
  address: string,
  latitude: number,
  longitude: number
}

我想要调用的函数最好看起来像这样:

addPlaceOnMap(mapPoint: { $key: string, PlaceOnMap } ) {
  this.placeOnMapIds.push(mapPoint.$key);
  this.newPlaceOnMap.next(mapPoint.lat, mapPoint.lng);
  this.uploadToFirebase(mapPoint.$key, { 
    name: mapPoint.address, 
    lat: mapPoint.lat, 
    lng: mapPoint.lng 
  });
}

关键是,我想将$key收到的Firebase与我的界面PlaceOnMap通常拥有的密钥合并。

为了完整性,我从Firebase收到的存储对象如下所示:

{
  address: string,
  latitude: number,
  longitude: number,
  street: string,
  country: string,
  description: string
}

我想我可以使用Typescript的联盟,但这不会像我希望的那样干净,因为我总是希望得到这个。我知道我可以创建一个新的界面,但这似乎是一种矫枉过正,因为我只使用它一次。

如果没有别的办法,我会使用any或使用两个参数(可能是前者)。

0 个答案:

没有答案