ライブラリの定義
「ライブラリの定義」とは?
ほとんどの実際の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
を確認することをお勧めします。