Facebookのflowをちょっとだけ使ってみた
Facebookのflowを使ってみた。JavaScript向けの型チェックしてくれるやつみたいだ。
使い方とかはドキュメントに書いてあるんだけど、まあメモがてら自分が試してみたことを書いていってみる。
インストール
ここにOS X用のバイナリとLinux(64bit)用のバイナリがあるのでダウンロードして展開する。brewでインストール出来るようになればいいんだけど、って自分で書けばいいのか。
追記
既にformulaが追加されているのでbrewからインストールできる。
展開したらパスを通す。
$ cd ~/Binary
$ curl -O http://flowtype.org/downloads/flow-osx-latest.zip
$ unzip flow-osx-latest.zip
$ rm flow-osx-latest.zip
$ echo 'export PATH=$HOME/Binary/flow:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ flow --version
Flow, a static type checker for Javascript, version 0.1.0
動いた。
試してみる
とりあえず試してみる。
$ mkdir -p ~/Work/flow
$ cd ~/Work/flow
.flowconfig って必ず必要なのか。空でも。
— Jxck (@Jxck_) 2014, 11月 19
空でも必ず.flowconfig
が必要になるらしいので作っておく。
$ touch .flowconfig
追記
touch
じゃなくてflow init
の方が良いみたい。
$ flow init
テキトーにindex.js
とか書いてみる。
function test(s: string) {
}
test(1);
$ flow check --all
/Users/macbookpro/Work/flow/index.js:5:6,6: number
This type is incompatible with
/Users/macbookpro/Work/flow/index.js:1:18,23: string
Found 1 error
怒られた!
コメントに型を書きたい
型チェックしてくれるのはいいんだけど、Closure Compilerみたくコメントに型を書きたいなーと思ってたんだけど。
Closure Compiler勢はこれをチェック "Type annotations in comments? · Issue #3 · facebook/flow" https://t.co/BnNbA65dWD
— azu (@azu_re) 2014, 11月 19
Type annotations in comments? #3
どうも読んだのと試した感じだと、JSDoc風のコメントとか独自?のコメントも見ているらしくて、実際
/**
* @param {string} s
*/
function test(s) {
}
test(1);
$ flow port index.js
/Users/macbookpro/Work/flow/index.js
--- old
+++ new
@@ -1,7 +1,7 @@
/**
* @param {string} s
*/
-function test(s) {
+function test(s: string) {
}
test(1);
とかやるとdiffを出力してくれるんだけど、
$ flow check --all
Found 0 errors
ってなるのでon the fly的にはまだ出来ないのかな。--help
をflowコマンドとかサブコマンドに渡すといろいろ出してくれるのでもう少しいろいろ見てみようかな。
mizchiさんのQiitaの記事。