eslint/arrow-body-style Style
What it does
This rule can enforce or disallow the use of braces around arrow function body. Arrow functions can use either:
- a block body
() => { ... } - or a concise body
() => expressionwith an implicit return.
Why is this bad?
Inconsistent use of block vs. concise bodies makes code harder to read. Concise bodies are limited to a single expression, whose value is implicitly returned.
Examples
"never"
Examples of incorrect code for this rule with the never option:
/* arrow-body-style: ["error", "never"] */
/* ✘ Bad: */
const foo = () => {
return 0;
};Examples of correct code for this rule with the never option:
/* arrow-body-style: ["error", "never"] */
/* ✔ Good: */
const foo = () => 0;
const bar = () => ({ foo: 0 });"always"
Examples of incorrect code for this rule with the always option:
/* arrow-body-style: ["error", "always"] */
/* ✘ Bad: */
const foo = () => 0;Examples of correct code for this rule with the always option:
/* arrow-body-style: ["error", "always"] */
/* ✔ Good: */
const foo = () => {
return 0;
};"as-needed" (default)
Examples of incorrect code for this rule with the as-needed option:
/* arrow-body-style: ["error", "as-needed"] */
/* ✘ Bad: */
const foo = () => {
return 0;
};Examples of correct code for this rule with the as-needed option:
/* arrow-body-style: ["error", "as-needed"] */
/* ✔ Good: */
const foo1 = () => 0;
const foo2 = (retv, name) => {
retv[name] = true;
return retv;
};
const foo3 = () => {
bar();
};"as-needed" with requireReturnForObjectLiteral
Examples of incorrect code for this rule with the { "requireReturnForObjectLiteral": true } option:
/* arrow-body-style: ["error", "as-needed", { "requireReturnForObjectLiteral": true }] */
/* ✘ Bad: */
const foo = () => ({});
const bar = () => ({ bar: 0 });Examples of correct code for this rule with the { "requireReturnForObjectLiteral": true } option:
/* arrow-body-style: ["error", "as-needed", { "requireReturnForObjectLiteral": true }] */
/* ✔ Good: */
const foo = () => {};
const bar = () => {
return { bar: 0 };
};Configuration
The 1st option
type: "as-needed" | "always" | "never"
"as-needed"
Enforces no braces where they can be omitted (default).
"always"
Enforces braces around the function body.
"never"
Enforces no braces around the function body (constrains arrow functions to the role of returning an expression).
The 2nd option
This option is an object with the following properties:
requireReturnForObjectLiteral
type: boolean
default: false
Requires braces and an explicit return for object literals. This option only applies when the first option is "as-needed".
How to use
To enable this rule using the config file or in the CLI, you can use:
{
"rules": {
"arrow-body-style": "error"
}
}import { defineConfig } from "oxlint";
export default defineConfig({
rules: {
"arrow-body-style": "error",
},
});oxlint --deny arrow-body-styleVersion
This rule was added in v1.4.0.
