RxJS打字稿:属性&#39;减少&#39;在类型&#39; Observable <number>&#39;上不存在

时间:2016-12-03 15:14:38

标签: typescript npm rxjs

我有这个小片段

const observable:Observable<number> = Observable.from([1, 2, 3])
  .reduce((sum: number, number: number) => {
    return sum + number
}, 0)
observable.subscribeOnNext((sum) => console.log(sum))

它按预期工作,但Typescript编译器会产生此错误:

  

错误TS2339:属性&#39;减少&#39;在类型&#39; Observable&#39;。

上不存在

如果reduce更改为scan,则错误消失(=编译器找到scan的定义,但reduce的定义没有)。

我使用npm,并安装了打字稿(2.0.10),rx(4.1.0)和@ types / rx(2.5.34)。

2 个答案:

答案 0 :(得分:1)

GitHub上的最新版本的RxJS 4添加了typings声明以及定义TypeScript类型的相关d.ts文件。

只需删除旧的rx@types/rx模块即可升级到最新版本并运行:

npm install --save Reactive-Extensions/RxJS

请注意语法Reactive-Extensions/RxJS,它是使用GitHub存储库源代码的简写。

答案 1 :(得分:1)

产生此错误的另一个原因是您如何导入Observable。我有

import {Observable} from 'rxjs/Observable'

通过将其更改为

导致相同的错误
import {Observable} from 'rxjs/Rx'      

它正确地解决了reduce方法。还有别的东西需要检查。