Flowはfacebookが作ってるJSに型を書けるやつ.
今日ちょっと練習してみたところ良かった.練習に手頃なところから型でも書いてみるかとやっていたところ,FormDataにFileをappendするところで,それはFileじゃなくて?Fileで,nullになる場合もあるのでおかしいよって教えてもらったりした.型をつけるだけで不具合が見つかって,こういう世界もあるのか,という感じだった.fileがなかったらreturnする処理を足しておいた.
ちょっとずつ書いていけるのがよくて,このファイルは難しいことをしていて型が付くと恩恵を受けられそう,とか,このあたりはこれからがっつり開発するので先に型を付けておこう,といった進めかたができる.
最初はちょっと慣れない部分もあったけど,ちょっと練習したら普通に書けるようになった.シンタックスがちょっと増えるので,どこまでJSのシンタックスで,どこからFlowなのか,意識しないと,こんなのあったっけ?ってなるかもしれない.
あとは,周りではどちらかというとTypeScriptが流行っていて,Flow大好きな人がいないので,困ったときに自分でなんとかする必要がある.
Flowはコンパイラではなくチェッカーなので,コンパイルできないと動かない,という世界ではなくて,チェックしてくれるだけなので,チェックが通らなくて開発が止まったり不具合が出てるけどコンパイルを待っててリリースできなくて危機的状況になったり,ということはなさそう.嫌なら型を書かなければよいだけの話.
以下はメモ
- FLOW IS A STATIC TYPE CHECKER FOR JAVASCRIPT.
// @flow
でflow状態になる
- 20分くらい書き忘れてぜんぜんチェックしてくれなくてハマった
- flow statusは現状の表示,flow checkは全部チェック
- flow-check –allで全部チェックしてくれる
// @flow
してないファイルも対象にチェックしてくれて手元では4900個エラー出た
- ドキュメント
- チートシート
- 設定は.flowconfig
- ignoreするとき,gitだと
/node_modules/
でよいけど,ふつうにignoreすると,偶然ディレクトリ名がnode_modulesなディレクトリ以下もignoreされてしまう
- プロジェクトルートを指す専用の変数があり,
<PROJECT_ROOT>/node_modules
と書ける
this.hoge
とかにいきなり代入できなくなる
- ブラウザのAPI
- Reactとの兼ね合い
- node_modulesとの兼ね合い
- node_modulesは無視しないとチェック通らない
- 一方で無視したままだとnpmで入れたモジュールが見つからない(requireで怒られる)
- flow-typed(TypeScriptのtypingsみたいなの)
- ライブラリの型を自分で書く
- Atomでチェックしたい