我是可观察者的新手,我想学习。
我有一个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
}
我该怎么做?
答案 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));
}