我在使用forkjoin运算符form rxjs时遇到typescript类型检查失败。
这是所讨论的代码:
let products = this.http.get(productUrl, { headers: this.headers })
.map(response => response.json().data as Product[]);
let loans = Observable.of(loan);
return Observable.forkJoin([products, loans])
.map(data => {
let resultProducts = data[0] as Product[];
if (resultProducts.length > 0) {
lead.Product = resultProducts.find(i => i.ID == productId);
}
lead.Loan = data[1];
return lead;
});
TSC发出的错误是:
Type 'Loan' cannot be converted to type 'Product[]'.
我对forkjoin的理解是,data[0]应该是一个产品[],data[1]应该是一个贷款,但是tsc似乎不同意。我的理解不正确吗?我是不是漏掉了一些能告诉tsc我想要什么的打字?
最佳答案
尝试在不传入数组的情况下使用observate.forkjoin。
// forkJoin with array
return Observable.forkJoin([products, loans])
// forkJoin without array
return Observable.forkJoin(products, loans)
.map(data => {
let resultProducts = data[0] as Product[];
// ...
lead.Loan = data[1];
})