Angular2:获取从数组`|`中选择单个对象的管道

Angular2: get a pipe that selects from an array `|` a single object

我在 Angular 中有一些复杂的 Observable(感谢使用 Akita,我无法更改它),它是一个 | 的 Observable 数组 Dinosaur 对象, 单个 Dinosaur 对象,或未定义:

import { QueryEntity } from "@datorama/akita";

export class DinosaurQuery extends QueryEntity<DinosaurState, Dinosaur> {
  activeDinosaurs$ = this.selectActive(); // Type: Observable<Dinosaur[]> | Observable<Dinosaur | undefined>

  constructor(protected store: DinosaursStore) {
    super(store);
  }
}

作为一个可观察对象,我想从中得到的是单个对象,数组中的第一个对象,以防它是一个数组。或者undefined,如果有none.

export class DinosaurSelection {
    // I want singleSelectedDinosaur$ to be of type: Observable<Dinosaur | undefined>
    singleSelectedDinosaur$ = this.dinosaurQuery.activeDinosaurs$.pipe(???);

    constructor(protected dinosaurQuery: DinosaurQuery) {}

}

我想一定有一些管道可以做到这一点,但我找不到合适的东西可以同时作用于对象的 | 和该对象的数组。 (或者也许它不能用管道来完成,但换一种方式也可以。)

如果是数组就用"pipe(map)"来转换

singleSelectedDinosaur$ = this.dinosaurQuery.activeDinosaurs$.pipe(
    map((res:any)=>{
       if (res && Array.isArray(res)) //if res and is array
          return res[0]   //return the first element
       return res;      //else resut res
    }
));