Flowは、コンポーネントとフックなどのReactプリミティブのファーストクラスサポートをFlow言語に追加するコンポーネント構文を発表することを嬉しく思います。これらの機能により、Reactの多くのルールのエルゴノミクス、表現力、および静的強制が向上します。
条件付き型の発表
条件付き型を使用すると、入力型を検査することにより、2つの異なる出力型から選択できます。
Flowタプル型の5つの新機能を発表
ラベル付きタプル要素、読み取り専用タプル、オプションのタプル要素、タプルスプレッドなど。
Flowは未使用のPromiseを検出できるようになりました
v0.201.0以降、Flowは未使用/フローティングPromiseに対してリントできるようになりました。未使用のPromiseは危険な場合があります。エラーが処理されない可能性があり、コードが意図した順序で実行されない可能性があるためです。それらは通常、Flowが警告するのに最適な間違いです。
Partial & Required Flowユーティリティ型 + catchアノテーションの発表
Flowバージョン0.201以降、Partial<ObjType>
を使用してオブジェクト型のフィールドをすべてオプションにします(安全でない$Shape
の代わりに使用)、Required<ObjType>
を使用してオブジェクト型のオプションフィールドを必須にします。
デフォルトで正確なオブジェクト型
5年前に、最終的に正確なオブジェクト型をデフォルトにする計画を発表しました。現在、この計画を進めています。
Flowのローカル型推論
ローカル型推論は、Flowのアノテーション要件を適度に増やし、業界標準に近づけ、ますます強力で明示的に型指定されたコードベースを活用することにより、Flowの推論動作をより信頼性が高く予測可能にします。
Flowにおける空オブジェクトの処理の改善
Flowは、空のオブジェクトリテラル{}を許可的だが安全でない方法で処理しました。この投稿で説明されている修正により、安全性と予測可能性が向上しますが、異なるパターンと動作を使用する必要があります。
Flowの関数とクラスへのアノテーションの追加要件
Flowは、関数とクラスへのアノテーションの追加を要求するようになりました。
新しいFlow言語ルール:制約付き書き込み
Flowは、初期化時にアノテーションされていない変数の型を決定する新しい言語ルールをリリースしています。これらの新しいルールに加えて、絞り込みが無効にならない原因となっていた健全性バグに対するいくつかの修正が行われています。
Flowのローカル型推論の紹介
Flowの現在の推論エンジンを、より予測可能に動作し、より局所的に推論できるシステムに置き換えています。
Flow列挙型の紹介
Flow列挙型は、独自の型を作成する固定の定数セットを定義できるオプトイン機能です。
TypeScript列挙型とFlow列挙型の比較
TypeScriptとFlowの列挙型機能の比較。
Flowインデックス付きアクセスタイプの紹介
Flowのインデックス付きアクセスタイプは、オブジェクト、配列、またはタプル型からプロパティの型を取得できる新しい型アノテーション構文です。
Flowにおける「this」のサウンドタイピング
関数とメソッドでthis
にアノテーションを付ける機能など、Flowでのthis
タイピングの健全性の向上。
Flowの方向性とオープンソースへの取り組みについての明確化
Flowの方向性とオープンソースへの取り組みの最新情報。
タイプファースト:Flowで唯一サポートされるモード(2021年1月)
タイプファーストは、v0.143(2021年1月中旬)でFlowの唯一のモードになります。
Flowのジェネリック型の処理の改善
Flowは、以前に許可されていた安全でない動作を禁止し、エラーメッセージを明確にすることにより、ジェネリック型の処理を改善しました。
タイプファースト:Flowのスケーラブルな新しいアーキテクチャ
Flowタイプファーストモードが登場しました!完全に型指定されたモジュール境界を活用することにより、Flowの可能性を大規模に解き放ちます。最新のブログ投稿で詳細をご覧ください。
Flowエラー抑制のより具体的な設定
エラーが誤って隠されないように、Flowエラー抑制を改善しています。
2020年に構築しているもの
2020年にFlowがどのように改善されるかについて学びます。
2019年のFlowの改善
2019年にFlowに加えられた改善点を振り返ります。
デフォルトで正確なオブジェクト型構文にアップグレードする方法
オブジェクト型はデフォルトで正確になります。コードの準備方法については、この投稿をお読みください!
スプレッド:一般的なエラーと修正
オブジェクトスプレッドの修正により、コードベースのエラーが明らかになります。一般的なエラーとその修正方法について詳しくお読みください。
IDEでのFlowエラーのライブ表示
入力中のライブエラーにより、IDEでのFlowの動作が高速になります!
近日公開:オブジェクトスプレッドの変更
Flowがオブジェクトスプレッドをモデル化する方法に変更が加えられます!この投稿で詳細をご覧ください。
Flowコードベースのアップグレード
0.84.0からのアップグレードに問題がありますか? FlowチームがFacebookでFlowをアップグレードする方法についてお読みください!
より応答性の高いFlow
Flow 0.92は、Flow開発者のエクスペリエンスを向上させます。
Flowチームの活動内容
2018年のFlowの活動内容をご覧ください。
React.forwardRefとそれ以降のサポート
新しいReactコンポーネントをより適切にモデル化するために、Reactモデルにいくつかの大きな変更を加えました。 React.AbstractComponentについて話しましょう!
必須アノテーションのリクエスト
Flowは0.85.0からより多くのアノテーションを要求するようになります。最新のブログ投稿でこれらのエラーに対処する方法を学びます。
ロードマップ:デフォルトで正確なオブジェクト
オブジェクト型をデフォルトで正確に変更しています。アップグレードに役立つcodemodをリリースします。
条件付きの不明なプロパティアクセスに関する新しいFlowエラー
TL;DR:0.68.0以降、Flowは条件付きで不明なプロパティにアクセスするとエラーを発生させるようになりました。
JavaScriptエコシステム向けのより良いFlowエラーメッセージ
昨年、Flowチームはタイプチェッカーによって生成される可能性のあるすべてのエラーメッセージをゆっくりと監査および改善してきました。 Flow 0.66では、Flowが見つけた各バグの読み取りと修正にかかる時間を短縮するように設計された新しいエラーメッセージ形式を発表できることを嬉しく思います。
Flowを使用したRecomposeの高階コンポーネントのタイピング
1か月前、Recomposeは公式のFlowライブラリ定義を公開しました。元のPRが1年前に@GiulioCantiによって作成されたことを考えると、定義はずっと前からありました。
Flowの不透明型エイリアスを使用したプライベートオブジェクトプロパティ
ここ数週間で、Javascriptのプライベートクラスフィールドの提案がステージ3に達しました。これは、実装の詳細をクラスのユーザーから隠すための優れた方法です。ただし、より機能的なスタイルを好む場合、OOPスタイルのプログラミングに固定することは必ずしも理想的ではありません。 Flowの不透明型エイリアスを使用して、任意のオブジェクト型でプライベートプロパティを取得する方法について説明しましょう。
FlowでReactのサポートをさらに強化
ReactのFlowサポートの最初のバージョンは、React.createClass()
の魔法の実装でした。それ以来、Reactは大きく進化しました。 FlowがReactをモデル化する方法を再考する時が来ました。
Flowでのリンティング
Flowの型情報は、プログラムが正しいことを証明するだけではありません。 Flowリンターを紹介します。
不透明型エイリアス
実装の詳細をユーザーから隠したいと思ったことはありませんか?不透明型エイリアスがどのようにジョブを完了できるかをご覧ください!
関数呼び出しアリティの厳密なチェック
Flowの当初の目標の1つは、慣用的なJavaScriptを理解できるようにすることでした。 JavaScriptでは、関数が予期するよりも多くの引数を使用して関数を呼び出すことができます。したがって、Flowは、余分な引数で関数を呼び出すことについて文句を言うことはありませんでした。
この動作を変更しています。
Flow-Typedの紹介
高品質でコミュニティ主導のライブラリ定義(「libdefs」)を持つことは、Flowで優れたエクスペリエンスを得るために重要です。本日、flow-typedを紹介します。リポジトリとCLIツールは、Flow libdefsを構築、共有、および配布するための新しいワークフローの最初の部分を表しています。
このプロジェクトの目標は、Flowの型推論を輝かせる、Flowの使命に沿ったlibdefsのエコシステムを成長させることです。現実世界のJavaScriptから正確で正確な型を抽出します。 TypeScriptのDefinitelyTypedなどの同様の取り組みから多くのことを学びました。学んだ教訓の一部をFlowエコシステムに取り入れたいと考えています。
このプロジェクトの目的は次のとおりです
プロパティの分散とその他の今後の変更
Flowの次のリリースである0.34には、オブジェクト型にいくつかの重要な変更が含まれます
- プロパティの分散、
- デフォルトで不変の辞書型、
- デフォルトで共変なメソッド型、
- より柔軟なゲッターとセッター。
Windowsのサポートが来ました!
Flowが64ビットWindowsで正式に利用可能になったことを発表できることを嬉しく思います! Flow v0.30.0以降、リリースごとにWindowsバイナリを公開します。 Windowsバイナリは、GitHubリリースページから直接.zipファイルでダウンロードするか、flow-bin npmパッケージを使用してインストールできます。試してみて、発生した問題を報告してください!

FlowをWindows上で動作させるのは容易ではありませんでしたが、Grégoire氏、Çagdas氏、そしてFabrice氏(OCamlPro所属)の多大な努力によって実現しました。
Union型とIntersection型の新しい実装
概要
Flow 0.28より前では、union型とintersection型の実装に深刻なバグがあり、[多数の][gh1759] [根本的な][gh1664] [原因となる][gh1663] [様々な][gh1462] [奇妙な][gh1455] [挙動の][gh1371] [原因と][gh1349] [なって][gh842] [いました][gh815]これらのバグは、[0.28に導入された差分][fotu].
バージョン 0.21.0
昨日、Flow v0.21.0をデプロイしました! いつものように、変更履歴に最も重要な変更点をリストアップしました。 しかし、飛行機の中で眠れないので、いくつかの変更点について詳しく説明してみるのも面白いと思いました! このブログ記事が面白くて読みやすいものになることを願っています!
JSX組み込み要素
JSXを書いている場合、おそらく独自のReactコンポーネントと組み込み要素が混在しているでしょう。 例えば、次のように書くかもしれません。
render() {
return <div><FluffyBunny name="Fifi" /></div>;
}
この例では、FluffyBunny
は自分で書いたReactコンポーネントであり、div
はJSX組み込み要素です。 小文字のJSX要素は、ReactとFlowによって組み込み要素と見なされます。 Flow v0.21.0までは、Flowは組み込み要素を無視して、any
型を付与していました。 つまり、FlowではJSX組み込み要素に任意のプロパティを設定できました。 Flow v0.21.0は、デフォルトではv0.20.0と同じ動作をします。ただし、JSX組み込み要素を適切に型付けするようにFlowを設定することもできます!
バージョン 0.19.0
本日、Flow v0.19.0がデプロイされました! 変更履歴にまとめられているように、多くの変更点があります。 変更履歴は少し簡潔すぎるかもしれないので、いくつかの変更点について詳しく説明します。 お役に立てれば幸いです!
@noflow
Flowはデフォルトではオプトインです(ファイルに@flow
を追加します)。 しかし、@flow
のないファイルにFlowアノテーションを追加してしまう人がいることに気づきました。 多くの場合、これらのユーザーはFlowによってファイルが無視されていることに気づいていませんでした。 そのため、Flow以外のファイルではFlow構文を許可しないことにしました。 これは、ファイルに@flow
または@noflow
を追加することで簡単に修正できます。 前者はファイルをFlowファイルにします。 後者はFlowにファイルを完全に無視するように指示します。
宣言ファイル
.flow
で終わるファイルは、特別な扱いを受けるようになりました。 これらは、モジュールの優先プロバイダーです。 つまり、foo.js
とfoo.js.flow
の両方が存在する場合、import Foo from './foo'
と書くと、Flowはfoo.js
ではなくfoo.js.flow
からエクスポートされた型を使用します。
.flow
ファイルの使い方は、主に2つあると考えています。
Flowを使ったジェネレーターの型付け
Flow 0.14.0には、ジェネレーター関数のサポートが含まれていました。 ジェネレーター関数は、JavaScriptプログラムに独自の機能を提供します。それは、実行を一時停止および再開する機能です。 この種のコントロールは、Flowがすでにサポートしている今後の機能であるasync/awaitへの道を開きます。
バージョン 0.17.0
本日、Flow v0.17.0をリリースしました! まず気づくのは、コマンドラインでのエラーの表示方法を変更したことです。 新しいエラーは次のようになります。

これにより、コマンドラインユーザーはソースコードを参照せずに多くのエラーを理解できるようになることを願っています。 この形式は今後も改良していく予定ですので、ご意見をお聞かせください! この機能を構築してくれた@franticに感謝します!
このリリースには、他にも多くの機能と修正が含まれています! 完全なリストについては、リリースをご覧ください!
バージョン 0.16.0
金曜日にFlow v0.16.0をリリースしました! リリースに含めたい主要なパフォーマンスの改善と、let/constのサポートが準備できました(@samwgoldmanに改めて感謝します)!
いつものように、変更履歴が大きな変更点をまとめるのに最適です。
バージョン 0.15.0
本日、Flow v0.15.0をリリースしました! 先月は多くの変更があり、すべての貢献者の努力を皆さんに見ていただくことに興奮しています! このリリースに貢献してくれたすべての人に感謝します!
新機能については、変更履歴をご覧ください。