Skip to content
← Back to rules

eslint/arrow-body-style 风格

An auto-fix is available for this rule.

它的作用

此规则可强制或禁止在箭头函数体周围使用大括号。 箭头函数可以使用以下任一种形式:

  • 块体 () => { ... }
  • 或简洁体 () => expression,具有隐式返回。

为什么这是个问题?

块体与简洁体的不一致使用会使代码更难阅读。 简洁体仅限于单个表达式,其值会被隐式返回。

选项

第一个选项:

  • 类型:string
  • 枚举值:"always""as-needed""never"
  • 默认值:"as-needed"

可能的取值:

  • never 强制函数体周围不使用大括号(将箭头函数限制为仅返回一个表达式)
  • always 强制函数体周围使用大括号
  • as-needed 在可以省略大括号时强制不使用大括号(默认)

第二个选项:

  • 类型:object
  • 属性:
    • requireReturnForObjectLiteral: boolean(默认:false)——对于对象字面量要求使用大括号和显式 return

注意:此选项仅在第一个选项为 "as-needed" 时生效。

示例配置:

json
{
  "arrow-body-style": ["error", "as-needed", { "requireReturnForObjectLiteral": true }]
}

示例

"never"

使用 never 选项时,此规则的错误代码示例:

js
/* arrow-body-style: ["error", "never"] */

/* ✘ 错误: */
const foo = () => {
  return 0;
};

使用 never 选项时,此规则的正确代码示例:

js
/* arrow-body-style: ["error", "never"] */

/* ✔ 正确: */
const foo = () => 0;
const bar = () => ({ foo: 0 });

"always"

使用 always 选项时,此规则的错误代码示例:

js
/* arrow-body-style: ["error", "always"] */

/* ✘ 错误: */
const foo = () => 0;

使用 always 选项时,此规则的正确代码示例:

js
/* arrow-body-style: ["error", "always"] */

/* ✔ 正确: */
const foo = () => {
  return 0;
};

"as-needed"(默认)

使用 as-needed 选项时,此规则的错误代码示例:

js
/* arrow-body-style: ["error", "as-needed"] */

/* ✘ 错误: */
const foo = () => {
  return 0;
};

使用 as-needed 选项时,此规则的正确代码示例:

js
/* arrow-body-style: ["error", "as-needed"] */

/* ✔ 正确: */
const foo1 = () => 0;

const foo2 = (retv, name) => {
  retv[name] = true;
  return retv;
};

const foo3 = () => {
  bar();
};

"as-needed" 配合 requireReturnForObjectLiteral

使用 { "requireReturnForObjectLiteral": true } 选项时,此规则的错误代码示例:

js
/* arrow-body-style: ["error", "as-needed", { "requireReturnForObjectLiteral": true }] */

/* ✘ 错误: */
const foo = () => ({});
const bar = () => ({ bar: 0 });

使用 { "requireReturnForObjectLiteral": true } 选项时,此规则的正确代码示例:

js
/* arrow-body-style: ["error", "as-needed", { "requireReturnForObjectLiteral": true }] */

/* ✔ 正确: */
const foo = () => {};
const bar = () => {
  return { bar: 0 };
};

配置

第一个选项

类型:"as-needed" | "always" | "never"

第二个选项

此选项是一个包含以下属性的对象:

requireReturnForObjectLiteral

类型:boolean

默认值:false

如何使用

要通过配置文件或命令行启用此规则,可以使用:

json
{
  "rules": {
    "arrow-body-style": "error"
  }
}
bash
oxlint --deny arrow-body-style

参考资料