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

.flowconfig [untyped]

.flowconfigファイルの[untyped]セクションは、指定された正規表現に一致するファイルの型チェックを行わず、代わりに型を破棄してモジュールをanyとして扱うようにFlowに指示します。

これは、一致するファイルをモジュールリゾルバーによって無視させ、それらを本質的に型チェックされていない状態にし、importrequireで解決できなくする[ignore]設定セクションとは異なります。無視される場合、[libs]を各importに対してflow-typedを使用して指定する必要がありますが、これは必ずしも望ましいとは限りません。

また、[declarations]セクションとも異なります。これもファイルの内容を型チェックしませんが、[declarations]は他のコードをチェックする際に、関数、クラスなどのシグネチャを抽出して使用します。

[untyped]は代わりに、ファイルに@noflowが含まれているかのように型チェッカーによって無視されるようにし、モジュールをany型として解決しますが、モジュールリゾルバーによって無視されないようにします。一致するファイルはFlowによってスキップされます(他の@noflowファイルのように解析すらされません!)が、require()で引き続き使用できます。

注意すべき点

  1. これらはOCaml正規表現です。
  2. これらの正規表現は絶対パスに対してマッチングを行います。おそらく.*で始めるべきです。

[untyped]セクションの例は次のようになります。

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

この[untyped]セクションは以下を解析します

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

正規表現で<PROJECT_ROOT>プレースホルダーを使用できます。実行時に、Flowはプレースホルダーをプロジェクトのルートディレクトリへの絶対パスであるかのように扱います。これは、絶対パスではなく相対パスである正規表現を記述するのに役立ちます。

たとえば、次のように記述できます。

[untyped]
<PROJECT_ROOT>/third_party/.*

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