版本

rest-spread-spacing

强制在剩余运算符和扩展运算符及其表达式之间使用空格

🔧 可修复

此规则报告的一些问题可以通过 --fix 命令行 选项自动修复

此规则已在 ESLint v8.53.0 中弃用。请使用 相应的规则@stylistic/eslint-plugin-js 中。

ES2015 引入了剩余运算符和扩展运算符,它们将可迭代结构扩展为其各个部分。以下是它们用法的一些示例

let numArr = [1, 2, 3];
function add(a, b, c) {
    return a + b + c;
}
add(...numArr); // -> 6

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
arr1.push(...arr2); // -> [1, 2, 3, 4, 5, 6]

let [a, b, ...arr] = [1, 2, 3, 4, 5];
a; // -> 1
b // -> 2
arr; // ->  [3, 4, 5]

function numArgs(...args) {
  return args.length;
}
numArgs(a, b, c); // -> 3

除了以上内容外,目前还有一个提议在规范中添加对象剩余属性和扩展属性。它们可以像下面这样使用


let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
x; // -> 1
y; // -> 2
z; // -> { a: 3, b: 4 }

let n = { x, y, ...z };
n; // -> { x: 1, y: 2, a: 3, b: 4 }

与其他运算符一样,在剩余运算符或扩展运算符与其操作的表达式之间允许使用空格,这会导致代码库中出现不一致的空格。

规则详情

此规则旨在强制在剩余运算符和扩展运算符及其表达式之间使用一致的空格。该规则还支持 ES2018 中的对象剩余属性和扩展属性

{
    "parserOptions": {
        "ecmaVersion": 2018
    }
}

请阅读用户指南中有关 配置解析器选项 的部分,以了解更多信息。

选项

此规则接受一个选项:一个字符串,其值为 "never""always"。默认值为 "never"

“never”

使用默认的 "never" 选项时,在扩展运算符及其表达式之间不允许使用空格。

rest-spread-spacing: ["error"]

rest-spread-spacing: ["error", "never"]

此规则使用 "never"错误代码示例

在游乐场中打开
/*eslint rest-spread-spacing: ["error", "never"]*/

fn(... args);
[... arr, 4, 5, 6];
let [a, b, ... arr] = [1, 2, 3, 4, 5];
function fn(... args) { console.log(args); }
let { x, y, ... z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ... z };

此规则使用 "never"正确代码示例

在游乐场中打开
/*eslint rest-spread-spacing: ["error", "never"]*/

fn(...args);
[...arr, 4, 5, 6];
let [a, b, ...arr] = [1, 2, 3, 4, 5];
function fn(...args) { console.log(args); }
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ...z };

“always”

使用 "always" 选项时,在扩展运算符及其表达式之间需要使用空格。

rest-spread-spacing: ["error", "always"]

此规则使用 "always"错误代码示例

在游乐场中打开
/*eslint rest-spread-spacing:["error", "always"]*/

fn(...args);
[...arr, 4, 5, 6];
let [a, b, ...arr] = [1, 2, 3, 4, 5];
function fn(...args) { console.log(args); }
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ...z };

此规则使用 "always"正确代码示例

在游乐场中打开
/*eslint rest-spread-spacing: ["error", "always"]*/

fn(... args);
[... arr, 4, 5, 6];
let [a, b, ... arr] = [1, 2, 3, 4, 5];
function fn(... args) { console.log(args); }
let { x, y, ... z } = { x: 1, y: 2, a: 3, b: 4 };
let n = { x, y, ... z };

何时不使用它

如果您不关心在扩展运算符及其表达式之间强制使用一致的空格,可以安全地禁用此规则。

版本

此规则在 ESLint v2.12.0 中引入。

进一步阅读

资源

更改语言