@babel/preset-flow
如果您使用 Flow(一种用于 JavaScript 代码的静态类型检查器),则建议使用此预设。它包含以下插件
示例
输入
JavaScript
function foo(one: any, two: number, three?): string {}
输出
JavaScript
function foo(one, two, three) {}
安装
- npm
- Yarn
- pnpm
npm install --save-dev @babel/preset-flow
yarn add --dev @babel/preset-flow
pnpm add --save-dev @babel/preset-flow
用法
使用配置文件(推荐)
babel.config.json
{
"presets": ["@babel/preset-flow"]
}
通过 CLI
Shell
babel --presets @babel/preset-flow script.js
通过 Node API
JavaScript
require("@babel/core").transformSync("code", {
presets: ["@babel/preset-flow"],
});
选项
all
boolean
,默认为 false
。
仅当文件顶部存在 @flow
编译指示或在 .flowconfig
中设置了 all
选项 时,Flow 才会解析 Flow 特定的功能。
如果您在 Flow 配置中使用了 all
选项,请确保将此选项设置为 true
以获得匹配的行为。
例如,如果没有设置上述任何一项,则以下带有类型参数的调用表达式
f<T>(e)
将被解析为嵌套的二元表达式
JavaScript
f < T > e;
allowDeclareFields
boolean
,默认为 false
添加于:v7.9.0
注意
这将在 Babel 8 中默认启用
启用后,仅当类型类字段以 declare
修饰符为前缀时,才会删除它们
JavaScript
class A {
declare foo: string; // Removed
bar: string; // Initialized to undefined
}
ignoreExtensions
boolean
,默认为 true
添加于:v7.24.0
当它设置为 true
时,Babel 将对所有扩展名应用 flow 转换。当它设置为 false
时,Babel 将避免对 *.tsx
文件进行 flow 转换。
experimental_useHermesParser
boolean
,默认为 false
添加于:v7.24.0
Hermes 团队正在为 Babel 维护一个替代的 Flow 解析器,它可以更好地与最新的 Flow 语法功能保持同步。您可以通过将此选项设置为 true
来启用它。
警告
Hermes 解析器当前不会将注释附加到 AST。这可能会导致依赖于特定注释存在的转换出现问题。
您可以在 此处 阅读有关配置预设选项的更多信息