npm - RxJS Typescript: Svojstvo 'reduce' ne postoji na tipu 'Observable'
Imam ovaj mali isječak
const observable:Observable<number> = Observable.from([1, 2, 3])
.reduce((sum: number, number: number) => {
return sum + number
}, 0)
observable.subscribeOnNext((sum) => console.log(sum))
Radi kako se očekuje, ali Typescript prevoditelj daje ovu pogrešku:
pogreška TS2339: Svojstvo 'reduce' ne postoji na tipu 'Observable'.
Ako se reduce promijeni u scan, pogreška nestaje (= definicija scan se nalazi od strane kompajlera, ali definicija reduce nije).
Koristim npm i imam instalirane typescript (2.0.10), rx (4.1.0) i @types/rx (2.5.34).
Odgovor #1
Najnovija verzija RxJS 4 na GitHubu dodala je typings deklaraciju i odgovarajuće d.ts datoteke koje definiraju tipove za TypeScript.
Jednostavno nadogradite na najnoviju verziju uklanjanjem starih modula rx i @types/rx i pokrenite:
npm install --save Reactive-Extensions/RxJS
Obratite pažnju na sintaksu Reactive-Extensions/RxJS koja je skraćenica za korištenje izvornog koda GitHub spremišta.
Odgovor #2
Još jedna stvar koja uzrokuje ovu pogrešku je način na koji uvozite Observable. Imao sam
import {Observable} from 'rxjs/Observable'
što je uzrokovalo istu pogrešku, promjenom u
import {Observable} from 'rxjs/Rx'
ispravno je riješio metodu reduce. Nešto drugo za provjeriti.
