Flow は Facebook 製の JavaScript 用型チェッカーです。JavaScript のコードを強力な型推論エンジンを使って型によるチェックをしてくれます。

JavaScript のコードのままでもチェックできますし、TypeScript と似た構文で型情報を教えてあげることもできます。TypeScript とくらべて素の JavaScript でも強力にチェックしてくれるのが強みです。

インストール

公式ドキュメント参照。 OS X の場合は brew install flow で簡単に入る。

準備

インストールしたら最初に設定ファイルを作る。

$ flow init

これで .flowconfig というファイルが作られる。そこに除外するファイルなどを指定できる。

ついでにチェック用の JavaScript を書いておく。

/* @flow */
// a.js
var a = 'A';
a * 2;

@flow とファイルの先頭に書くとそのファイルを型チェックしてくれます。

a * 2 は文字列に数値をかけようとしているので実行時に NaN になります。これを実行する前に検知します。

型チェック

JavaScript と同じディレクトリで flow check とすれば型チェックができます。

$ flow check

/path/to/project/a.js:4:1,1: string
This type is incompatible with
/path/to/project/a.js:4:1,5: number

Found 1 error

このようにエラーが発生します。

/* @flow */
// a.js
var a = 2;
a * 2;

このように var a の初期値を数値にすることで、エラーが消えます。既存の動いているコードでもチェックしてみるとバグが見つかるかもしれません。

まとめ

  • flow は Facebook 製の JavaScript 型チェックツール
  • 強力な型推論を行い素の JavaScript でもチェックできる