LoginSignup
7
3

More than 3 years have passed since last update.

フロントエンド開発の言語選定 (TypeScript vs FlowType)

Last updated at Posted at 2019-07-08

目的

  • フロントエンド開発で、静的型付け言語の選定のための比較・判断材料。
  • めんどくさいので、メジャーな TypeScript と FlowType のみ比較する。
    • Scala.js とか PureScript とかもあるが、プロダクトコードで採用されることは稀であろう。
  • 「TypeScript も FlowType も使わない」みたいな原始生活は論外なので触れない。

比較表

調査実施日 : 2019-07-09

TypeScript FlowType
Development Corp. Microsoft Facebook
Current ver. 3.5.2 0.102.0
1st release date 2014-09-18 2014-11-19
Latest release date 2019-06-13 2019-06-25
Weekly DLs (npm) 5,694,392 455,270
Used by (GitHub) 1,295,137 64,764
Star (GitHub) 51,143 19,724
Contributors (GitHub) 394 636
Implemented lang TypeScript OCaml

Google Trends

補足

1st release

https://github.com/facebook/flow/releases?after=v0.2.0
https://github.com/microsoft/TypeScript/releases?after=v1.5.4

総評

FlowType を選ばない理由

  • Google Trends の結果が低い。
    • 「Flow」という単語を除外しているためフェアな比較になってない。
    • しかし、ググラビリティが低く無関係な結果まで含まれてしまうため、しょうがない。
    • このググラビリティの低さは、減点ポイントである。
  • ビルド・設定が複雑。
    • flow-typed のインストール、.flowconfig の設定、など。
  • ver が未だに 1 未満である。
    • https://semver.org/lang/ja/
    • > メジャーバージョンのゼロ(0.y.z)は初期段階の開発用です。いつでも、いかなる変更も起こりえます。この時のパブリック API は安定していると考えるべきではありません。
    • > またもし安定した API を持ち、それに依存しているユーザーが複数いるのなら、それは 1.0.0 であるべきでしょう。もし後方互換性について多大な心配をしているのなら、それは 1.0.0 であるべきでしょう。
      • 事実、後方互換がないことが多々ある。
      • 例えば、「今まで問題なかったコードが、アップデート後に型チェックエラー」「flowconfig のオプションがなくなった」など
      • 量が多いと対応しきれず、「アップデートできない」となってしまう。

TypeScript を選ばない理由

  • ビルド・設定が複雑化する。
    • Babel 7 (2018-08-28) 以前は、 TypeScript のビルドには ts-loader が必要
      • 例えば、 React 開発で create-react-app を使っていた場合、2.1.0 (2018-10-29) 以前で静的型付けをしたくば、下記 2 択だった。
        • eject して TypeScript を導入する
        • eject せず FlowType を使う
    • 今は、 create-react-app の eject なしで TypeScript を使用可能。
    • 自分でビルド組む場合も、Babel でトランスパイルできる。
      • → (FlowType より)ビルド・設定が複雑、とはならない。
  • (FlowType より)型推論が弱い
    • 逆に、明示的に型を書かせたい場合はこの方がよい。

結論

  • TypeScript を選ぶ
7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3