跳至主要內容

.flowconfig [宣告]

第三方函式庫通常有錯誤的類型定義,或只有與特定版本的 Flow 相容的類型定義。在這些情況下,使用第三方函式庫的類型資訊,而不檢查其內容的類型,可能會很有用。

.flowconfig 檔案中的 [declarations] 區段會指示 Flow 以宣告模式剖析符合指定正規表示式的檔案。在宣告模式中,不會檢查程式碼的類型。不過,函式、類別等的簽章會被提取出來,並在檢查其他程式碼時,由類型檢查器使用。

從概念上來說,可以將宣告模式視為 Flow 仍然會檢查檔案的類型,但會像每一行都有 $FlowFixMe 註解一樣。

另請參閱 [untyped],以了解如何不檢查檔案的類型,而是對所有內容使用 any

需要記住的事項

  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/.* 不同,它不會解析 third_party/ 目錄下的檔案或目錄,例如 src/third_party/