跳至主要内容

.flowconfig [untyped]

.flowconfig 文件中的 [untyped] 部分告诉 Flow 不要对匹配指定正则表达式的文件进行类型检查,而是丢弃类型并将模块视为 any

这与 [ignore] 配置部分不同,后者会导致匹配的文件被模块解析器忽略,这会使它们无法进行类型检查,也无法通过 importrequire 解析。当被忽略时,必须为每个使用 flow-typedimport 指定 [libs],这可能并不总是理想的。

它也与 [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/.* 不同,它不会解析名为 third_party/ 的目录下的文件或目录,例如 src/third_party/