Flowtype v0.38.0を試す

※全ての変更点は自分自身の眼で確認しましょう*1
https://github.com/facebook/flow/releases/tag/v0.38.0

個人的に注目する機能追加・修正は以下

  • implements構文のサポート
  • タプル型が厳格化
  • flow checkとflow serverコマンドにprofileオプション追加
  • emojiサポート

implements構文のサポート

https://github.com/facebook/flow/commit/ec918a7132b9c260d6a594ea16c0db952780203f
TypeScriptと同じ形で使用できるようになった。
以下のようなコードが動く。(今まではimplements構文が無いため (new Human: Animal) などとしていた)

interface Animal { eat(everything: any): 'unko' | 'gero'; }

class Human implements Animal {
  eat(everything: any) {
    // doSomething(any);
    return 'unko';
  }
}

タプル型が厳格化

https://flowtype.org/docs/arrays.html#tuples
今までは配列と区別がなくゆるゆるだったが、$ReadOnlyArrayを親クラスに持つようになった。
Arrayと[number, number]は明確に異なる型として扱われるようになる。
まだタプルの式展開や配列化などの機能がないため発展途上感があるが、そのうち色々と実装されると思われる。
https://github.com/facebook/flow/commit/5651c4815c00bd6ee7284cebc6ea1659f15a9487 はおそらく次のリリースで入る?

flow checkとflow serverコマンドにprofileオプション追加

flow check --profileやflow server --profileというオプション指定を行うと
処理時間などの出力を行えるようになった。
flowコマンドはたまにおかしな動きをすることがあるので使うことがあるかもしれない。

emojiサポート


.flowconfigファイルのoptionsにemoji=trueを指定すると絵文字でflowサーバステータスを伝えてくれる謎機能。
これを使うとバージョン0.37.4以下と非Unix環境ではflowが全く動作しなくなるので選民用としては使えるのか…?

*1:所詮私の記事ははっきり言って個人の日記レベルであり信用に足るものではありません