.flowconfig [untyped]
.flowconfig 文件中的 [untyped] 部分告诉 Flow 不要对匹配指定正则表达式的文件进行类型检查,而是丢弃类型并将模块视为 any。
这与 [ignore] 配置部分不同,后者会导致匹配的文件被模块解析器忽略,这会使它们无法进行类型检查,也无法通过 import 或 require 解析。当被忽略时,必须为每个使用 flow-typed 的 import 指定 [libs],这可能并不总是理想的。
它也与 [declarations] 部分不同。这也不会对文件内容进行类型检查,但 [declarations] 会在检查其他代码时提取并使用函数、类等的签名。
[untyped] 会导致文件被类型检查器忽略,就好像它包含 @noflow 一样,将模块解析为 any 类型,但允许它们不被模块解析器忽略。任何匹配的文件都会被 Flow 跳过(甚至不会像其他 @noflow 文件那样被解析!),但仍然可以被 require()。
需要注意的事项
- 这些是 OCaml 正则表达式。
- 这些正则表达式与绝对路径匹配。它们可能应该以
.*开头
一个示例 [untyped] 部分可能如下所示
[untyped]
.*/third_party/.*
.*/src/\(foo\|bar\)/.*
.*\.untyped\.js
此 [untyped] 部分将解析
- 名为
third_party的目录下的任何文件或目录 .*/src/foo或.*/src/bar下的任何文件或目录- 任何以扩展名
.untyped.js结尾的文件
您可以在正则表达式中使用 <PROJECT_ROOT> 占位符。在运行时,Flow 会将占位符视为项目根目录的绝对路径。这对于编写相对而不是绝对的正则表达式很有用。
例如,您可以编写
[untyped]
<PROJECT_ROOT>/third_party/.*
这将在声明模式下解析项目根目录下名为 third_party/ 的目录下的任何文件或目录。但是,与前面的示例中的 .*/third_party/.* 不同,它不会解析名为 third_party/ 的目录下的文件或目录,例如 src/third_party/。