我有这个小片段
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)。
答案 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方法。还有别的东西需要检查。