この記事は 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 系の方がずっと簡潔ですし読みやすいと思います。
すこし後悔しています。