この記事は bouzuya's RxJS Advent Calendar 2015 24 日目かつ RxJS Advent Calendar 2015 の 24 日目です。
はじめに
今日は RxJS 4 から 5 への移行 のドキュメントから抜粋して書きます。
RxJS 5
ここまで RxJS 4 (v4.0.7) を対象に書いてきました。
RxJS 4 は Reactive-Extensions/RxJS でしたが、 RxJS 5 は ReactiveX/RxJS で開発が進められています。2015-12-24 時点では 5.0.0-beta.0 です。
JavaScript から TypeScript へ
RxJS 4 が独自の module (concat) を使った JavaScript で書かれていたのに対して、RxJS 5 は ES6 module style の TypeScript で書かれています。RxJS 4 にも *.d.ts
は配置されていましたが JavaScript で書かれていました。 RxJS 5 では TypeScript で書かれています。
標準的な module 構造ですし型情報のおかげで読みやすくなっています。
Observer の method 名
Observer
にあった onNext
/ onError
/ onCompleted
は next
/ error
/ completed
に変更されました。ES7 Observable の仕様に合わせたものです。おそらく onNext
を明示的に呼び出すのは不格好だからでしょう。
Disposable → Subscription
Disposable
は Subscription
になり、dispose()
は unsubscribe()
になりました。以前から class Subscription implements Disposable
のつもりだったかもしれません。subscribe
との対応は unsubscribe
のほうがずっと良いでしょう。
Subscription
は CompositeDisposable
と同等の add()
/ remove()
を持ちます。add
された Subscription
は unsubscribe
の際に合わせて unsubscribe
されます。
Operator の rename や split
flatMap
に mergeMap
という alias が追加されたほか、Operator の変更や分割や削除などが入っています。140 個近くあった operator は 90 個近くまで削減されています。一部を分割してこの数なので相当な削減です。
今回の Advent Calendar で紹介したものも、一部は削除されています。
Scheduler の rename
Scheduler
の名前が JavaScript における実装に適した形に変更されています。
-
Scheduler.default
→Scheduler.asap
-
Scheduler.currentThread
→Scheduler.queue
-
Scheduler.immediate
→undefined
おわりに
今日は RxJS 4 から 5 への移行を見ていきました。時期的に微妙だったので今回は 4.0.7 にしたのですが、RxJS 5 系の方がずっと簡潔ですし読みやすいと思います。
すこし後悔しています。