.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/
。