我正在使用使用RxJS Observables的Typescript Angular2站点。我正在获取一块用户数据并命中两个不同的API端点。我这样.forkJoin
将它们放在一起
var First: TypeA = this.api.FirstEndpoint(...);
var Second: TypeB = this.api.SecondEndpoint(...);
Observable.forkJoin(First, Second).subscribe((results: (TypeA|TypeB)[]) => {
var first = <TypeA>results[0];
var second = <TypeB>results[1];
...
});
虽然这在技术上有效,但我觉得这有点笨拙。特别是如果我加入越来越多的请求或可变数量的请求。没有任何内容表明results[0]
是TypeA或1
是TypeB。
是否有更顺畅的方式来键入results
或forkJoin
的替代方案,它们会合并请求但保持其响应不同(因此更明确地键入)?
答案 0 :(得分:0)
您可以定义自己的选择器,编译器应该使用它来推断结果流的类型:
var combined = Observable.forkJoin(First, Second, (first, second) => {
return { first, second };
});
combined.subscribe(result) => {
// I don't think you'll need to explicitly cast
var first = result.first;
var second = result.second;
...
});