フロントエンド開発の言語選定 (TypeScript vs FlowType)
3521 ワード
目的
- フロントエンド開発で、静的型付け言語の選定のための比較・判断材料。
- めんどくさいので、メジャーな TypeScript と FlowType のみ比較する。
- Scala.js とか PureScript とかもあるが、プロダクトコードで採用されることは稀であろう。
- 「TypeScript も FlowType も使わない」みたいな原始生活は論外なので触れない。
比較表
調査実施日 : 2019-07-09
TypeScript | FlowType | |
---|---|---|
Development Corp. | Microsoft | |
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 を使う
- 例えば、 React 開発で create-react-app を使っていた場合、2.1.0 (2018-10-29) 以前で静的型付けをしたくば、下記 2 択だった。
- 今は、 create-react-app の eject なしで TypeScript を使用可能。
- 自分でビルド組む場合も、Babel でトランスパイルできる。
- → (FlowType より)ビルド・設定が複雑、とはならない。
- Babel 7 (2018-08-28) 以前は、 TypeScript のビルドには ts-loader が必要
- (FlowType より)型推論が弱い
- 逆に、明示的に型を書かせたい場合はこの方がよい。
結論
- TypeScript を選ぶ
Author And Source
この問題について(フロントエンド開発の言語選定 (TypeScript vs FlowType)), 我々は、より多くの情報をここで見つけました https://qiita.com/arx8/items/5e0b2873cb982b830fa7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .