メインコンテンツへスキップ

.flowconfig [declarations]

多くの場合、サードパーティーのライブラリは破損した型定義を持っていたり、特定バージョンの Flow とのみ互換性のある型定義を持っています。そのような場合、サードパーティーのライブラリの型情報を内容をタイプチェックせずに利用することが便利です。

.flowconfig ファイルの [declarations] セクションは、Flow に指定された正規表現に一致するファイルを宣言モードで解析するように指示します。宣言モードでは、コードはタイプチェックされません。ただし、関数、クラスなどのシグネチャは抽出され、他のコードをチェックするタイプのチェッカーで使用されます。

概念的には、宣言モードは Flow がまだファイルをタイプチェックしているが、すべての行に $FlowFixMe コメントがあるかのように動作すると考えることができます。

ファイルをチェックせずにすべての内容に代わりに any を使用する [untyped] も参照してください。[untyped] for not typechecking files, and instead using any for all contents.

心に留めておくべきこと

  1. 宣言モードは、既存のサードパーティのコードにのみ使用してください。制御下のコードにはこれを決して使用しないでください。
  2. これらは OCaml の正規表現 です。
  3. これらの正規表現は絶対パスと一致します。おそらく .* で始まる必要があります。

[declarations] セクションの例を次に示します

[declarations]
.*/third_party/.*
.*/src/\(foo\|bar\)/.*
.*\.decl\.js

この [declarations] セクションは宣言モードで解析します

  1. third_party という名前のディレクトリ下の任意のファイルまたはディレクトリ
  2. .*/src/foo または .*/src/bar の下の任意のファイルまたはディレクトリ
  3. 拡張子が .decl.js で終わる任意のファイル

正規表現にプレースホルダー <PROJECT_ROOT> を使用できます。ランタイム時に、Flow は、プレースホルダーをプロジェクトのルートディレクトリへの絶対パスであるかのように扱います。これは、絶対ではなく相対的な正規表現を作成する場合に便利です。

たとえば、次のように書くことができます

[declarations]
<PROJECT_ROOT>/third_party/.*

これは、プロジェクトルート内の third_party/ というディレクトリ下の任意のファイルまたはディレクトリを宣言モードで解析します。ただし、前の例の .*/third_party/.* とは異なり、src/third_party/ などの third_party/ という名前のディレクトリ下のファイルやディレクトリを解析することはありません。