我在使用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];
  })

10-06 10:09
查看更多