このブログははてなブログからの移行記事です。

weakモードとは

flowtypeの説明は割愛します。

知りたい方は福岡PHPカンファレンスに来て私のトークを聞いてください💕

冗談はさておき、ざっくり言うとflowtypeはFacebook製のJavaScript用静的型解析ツールです。

ファイルの頭に// @flowを書き足すことでそのファイルをflowtypeの解析対象とすることができます。

一昔前(と言っても2, 3ヶ月前程度)はこの時に// @flow weakと書くことによりweakモードでの解析が可能でした。

このweakモードは引数や返り値の型宣言が無いことを許容し、PureなJavaScriptを解析することができるものです。

このweakモードが現在は無くなっています。

なぜなくなったのか

詳しい経緯は以下のIssueを読んで下さい。

github.com

噛み砕くと

  • いつの間にか// @flow weakと書いてもweakモードで実行されなくなった
  • Issuer「なんで消えたの?便利だったのに!」
  • Maintainer「確かに一定の場面では便利なんだけどメンテナンスをちゃんとしてないこと、weakモードの時に何をチェックしてるか不明瞭だから無くしたよ」
  • Maintainer「とはいえGitHubで検索してみると4000以上のコードで使われてるし破壊的な変更はなるべくしないよ」

といった感じです。 実際、リリースタグを見るとv0.40.0このリリースではまだweakモードは消さないよと言っています。

で、今はどうなのか

具体的にどのバージョンで変更が加わったのか見つけられなかったのですが(知ってる人いたらこっそり教えてください)、現在はweakモードは存在しません。

当然ドキュメントにも書いてありません。

個人的な意見として、weakモードの嬉しいところは既存のコードを書き換えずにflowtypeの解析の恩恵を受けられる点だと思っていたのでプロダクションコードにflowtypeをねじ込もうとしてた身としては悲しかったのですが、安心してください。

現在は通常のモードでも型の明示的宣言を強いられることはありません。

なので従来通り、既存のコードに導入しやすいというメリットは残っていると思います。

やったぜ。