
rest-spread-spacing
强制 rest 和 spread 运算符及其表达式之间的间距
🔧 可修复
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复
ES2015 引入了 rest 和 spread 运算符,它们将可迭代结构扩展为其各个部分。以下是它们用法的一些示例
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
除了上述内容外,目前还有一个提案将对象 rest 和 spread 属性添加到规范中。 它们可以如下使用
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 }
与其他运算符一样,rest 或 spread 运算符与其操作的表达式之间允许空格,这可能导致代码库中出现不一致的间距。
规则详情
此规则旨在强制 rest 和 spread 运算符及其表达式之间保持一致的间距。该规则还支持 ES2018 中的对象 rest 和 spread 属性
{
"parserOptions": {
"ecmaVersion": 2018
}
}
请阅读用户指南中关于配置解析器选项的部分以了解更多信息。
选项
此规则接受一个选项:一个字符串,值为 "never"
或 "always"
。默认值为 "never"
。
“never”
当使用默认的 "never"
选项时,spread 运算符及其表达式之间不允许有空格。
rest-spread-spacing: ["error"]
或
rest-spread-spacing: ["error", "never"]
使用 "never"
时此规则的错误代码示例
在 Playground 中打开
/*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"
时此规则的正确代码示例
在 Playground 中打开
/*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"
选项时,spread 运算符及其表达式之间需要空格。
rest-spread-spacing: ["error", "always"]
使用 "always"
时此规则的错误代码示例
在 Playground 中打开
/*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"
时此规则的正确代码示例
在 Playground 中打开
/*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 };
何时不使用
如果您不关心强制 spread 运算符及其表达式之间保持一致的间距,您可以安全地禁用此规则。
版本
此规则在 ESLint v2.12.0 中引入。
延伸阅读
