函式庫定義
什麼是「函式庫定義」?
大多數實際的 JavaScript 程式都依賴第三方程式碼,而不僅僅是專案直接控制下的程式碼。這表示使用 Flow 的專案可能需要參照外部程式碼,而這些程式碼可能沒有型別資訊,或沒有準確或精確的型別資訊。為了處理這個問題,Flow 支援「函式庫定義」(又稱為「libdef」)的概念。
libdef 是一個特殊檔案,用來告知 Flow 應用程式使用的某些特定第三方模組或模組套件的型別簽章。如果您熟悉具有標頭檔案的語言(例如 C++
),您可以將 libdef 視為類似的概念。
這些特殊檔案使用與一般 JS 程式碼相同的 .js
副檔名,但它們會放置在專案根目錄中名為 flow-typed
的目錄中。放置在這個目錄中會告知 Flow 將它們解釋為 libdef,而不是一般的 JS 檔案。
注意:將
/flow-typed
目錄用於 libdef 是一種慣例,讓 Flow 可以直接「JustWork™」,並鼓勵使用 Flow 的專案保持一致性,但也可以使用.flowconfig
的[libs]
區段 明確設定 Flow 在其他地方尋找 libdef。
您也可以瞭解 宣告檔案。
一般最佳實務
嘗試為專案使用的每個第三方程式庫提供 libdef。
如果專案使用沒有類型資訊的第三方程式庫,Flow 會將其視為任何其他未輸入相依關係,並將其所有匯出標記為 any
。
由於此行為,建議盡可能為使用的第三方程式庫尋找或撰寫 libdef。我們建議查看 flow-typed
工具和儲存庫,它可以協助您快速尋找並安裝第三方相依關係的預先存在的 libdef。