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

ライブラリの定義

「ライブラリの定義」とは?

ほとんどの実際のJavaScriptプログラムは、そのプロジェクトで直接制御できるコードだけでなく、サードパーティ製コードに依存しています。つまり、Flowを使用するプロジェクトは、型情報を持たないか、正確または正確な型情報を持たない外部コードを参照する必要がある場合があります。これを処理するために、Flowは「ライブラリの定義」(別名「libdef」)の概念をサポートしています。

libdefは、アプリケーションが使用する一部の特定のサードパーティモジュールまたはモジュールパッケージの型シグネチャについてFlowに通知する特別なファイルです。ヘッダーファイルを持つ言語(C++など)に慣れている場合は、libdefを同様の概念だと考えることができます。

これらの特別なファイルは、通常のJSコードと同じ.js拡張子を使用しますが、プロジェクトのルートディレクトリのflow-typedというディレクトリに配置されます。このディレクトリに配置すると、Flowはそれらを通常のJSファイルではなく、libdefとして解釈するようになります。

注意: libdefに/flow-typedディレクトリを使用することは、FlowをすぐにJustWork™させてflowを使用するプロジェクト全体で一貫性を持たせる慣例ですが、.flowconfig[libs]セクションを使用してFlowに別の場所にあるlibdefを探させるように明示的に設定することもできます。

宣言ファイルについても詳しく見ることができます。

一般的なベストプラクティス

プロジェクトで使用される各サードパーティライブラリにlibdefを提供するようにしてください。

プロジェクトで型情報を持たないサードパーティライブラリが使用されている場合、Flowはそれを他の型付けされていない依存関係と同様に扱い、そのすべてのエクスポートをanyとしてマークします。

この動作のため、使用しているサードパーティライブラリの可能な限り多くにlibdefを見つけるか記述することがベストプラクティスとなります。サードパーティの依存関係の既存のlibdefをすばやく見つけてインストールするのに役立つtool and repository flow-typedを確認することをお勧めします。