Typescript 可观察的链接、平面图和类型转换
我对可观测事物是新手,我想学习 我有一个API.get()方法,它返回类型为T的承诺,因为T是:Typescript 可观察的链接、平面图和类型转换,typescript,promise,observable,Typescript,Promise,Observable,我对可观测事物是新手,我想学习 我有一个API.get()方法,它返回类型为T的承诺,因为T是: export interface T { data?: object; errors?: [object]; extensions?: { [key: string]: any; }; 我想做的是在如下函数中调用此API: public get(): Observable<R>{ // Convert API.get():Prom
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
}
public get():可观察{
//Convert API.get():将承诺转换为可观察的
//获取T.data并将其强制转换为类型R
//可观测回波
//捕获T错误中的潜在错误
}
我该怎么做呢?假设您使用rxjs6,您可以使用
from
函数将承诺转换为可观察。然后通过管道连接到map
操作符来强制转换它。我不确定R是一个定义的接口,还是希望get
是泛型的。如果后者为真,则需要将
放在get
之后,然后将用作关键字。但对于大多数类型,这可能会失败
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));
}
import{from,Observable}from'rxjs';
从“rxjs/operators”导入{map}
/*...*/
public get():可观察{
const obs=from(API.get());
返回obs.pipe(map(response=>response as R));
}
是R
已定义的类型,还是要将get
函数设置为通用?您还可以使用catchErrors
来完成问题中有关错误的部分谢谢。R是一个类似于Eok的接口,如果R是一个已知的接口,我们需要知道它是什么样子才能正确地转换它。但是,如果例如R
只有一个data
字段,转换将如下所示:{data:response.data}
@PAc0在我的例子中,我有两个错误源:1。当API.Get()失败时2。T.errors不是空的。get()位于我的服务层,我在组件级别订阅它。订阅时如何检查所有这些错误?我建议您在订阅之前使用catchError
操作符检查。将其放置在管道内的贴图之后。你应该能够通过谷歌搜索找到好的文档。如果您仍然无法理解,请在stackoverflow上创建一个新问题,在这里您可以提到您尝试过的内容。