从{} []到Array <array <any>&gt;的Typescript强制转换类型的订阅

时间:2017-02-21 05:16:02

标签: typescript

我正在尝试执行以下操作,但是我在第二个for循环中的monthData下遇到语法错误。

Observable.forkJoin(observableArray)
  .subscribe(monthArray => {

    console.log(monthArray)

    for (let monthData of monthArray) {
      for (let dataEntry of monthData) {
        // do somehting with dataEntry which is an object
      }
    }
  }

抱怨

  

type {}不是数组类型或字符串类型

所以当我将鼠标悬停在monthArray上时,它的类型是{} []。

但是,我100%确定返回的monthArray是类型数组的数组,如图所示

screen shot

有没有办法将monthArray从{} []转换为

  

Array<Array<any>>>

1 个答案:

答案 0 :(得分:0)

我很惊讶这里的类型是错误的,RXJS5在设计时考虑到了TypeScript,并且通常具有非常好的类型。尽管如此,你应该能够在你的情况下做这样的事情:

 Observable.forkJoin(observableArray)
  .subscribe(arr => {
    const monthArray = arr as Array<Array<any>>;
    for (let monthData of monthArray) {
      for (let dataEntry of monthData) {
        // do somehting with dataEntry which is an object
      }
    }
  }

如果您有兴趣了解更多信息,请查看this nice writeup on type assertions