可观察的链接,flatMap和类型转换

时间:2018-09-28 14:16:45

标签: typescript promise observable

我是可观察者的新手,我想学习。

我有一个API.get()方法,当T为T时,它返回类型T的承诺:

export interface T {
    data?: object;
    errors?: [object];
    extensions?: {
        [key: string]: any;
    };

我想做的是在这样的函数中调用此API:

public get(): Observable<R>{

   // Convert API.get():Promise<T> to an observable
   // get T.data and cast it to type R
   // return observable<R>
   // catch potential error in T.errors 

}

我该怎么做?

1 个答案:

答案 0 :(得分:1)

假设您使用rxjs6,则可以使用from函数将Promise转换为Observable。然后,通过管道传递到map运算符以进行强制转换。我不确定R是否是已定义的接口或是否希望get是通用的。如果后者为true,则也需要在<R>之后放置get,然后使用as关键字。但是对于大多数类型,这可能会失败。

import { from, Observable } from 'rxjs';
import { map } from 'rxjs/operators'

/*...*/
public get<R>(): Observable<R>{
    const obs = from(API.get());
    return obs.pipe(map(response => response as R));
}