首页 > 解决方案 > 当源作为变量传递时,ForkJoin 抛出错误

问题描述

我已经forkjoin实现如下:

   getData() {
    forkJoin({
      a: of([1, 2, 3]),
      b: of([4, 5, 6]),
      c: of([7, 8, 9])
    }).subscribe(r => {
      console.log(r.a, r.b, r.c);
    });
  }

此代码有效,我可以在控制台上看到输出,但是如果我将源移动到变量,forkoin则不再有效。

   getData() {
    const source = {
      a: of([1, 2, 3]),
      b: of([4, 5, 6]),
      c: of([7, 8, 9])
    };
    forkJoin(source).subscribe(r => {
      console.log(r.a, r.b, r.c);
    });
  }

它的抛出错误:

“从不”类型上不存在属性“a”。

为什么会发生这种情况以及如何解决?

StackBlitz 可以在这里找到

标签: angulartypescriptrxjs

解决方案


找到答案,stackblitz 链接。第一个答案没有提到解决方案。你不能在forkJoin的尖括号中传递类型转换,你只需要在回调中添加类型。使用 typeof source 不定义新类型。将类型分配给源,也不将其设置为 const 提供了正确的类型定义。只在回调中给出一个类型似乎有效。

https://stackblitz.com/edit/so-question-forkjoin-so?file=src/app/app.component.ts


推荐阅读