rest-spread-spacing
强化rest和spread运算符及其表达式之间的间隔(rest-spread-spacing)
在--fix
命令行上的选项可以自动修复一些被这条规则反映的问题。
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
除上述之外,目前还有一项建议,将对象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属性:
{
"parserOptions": {
"ecmaVersion": 6,
"ecmaFeatures": {
"experimentalObjectRestSpread": true
}
}
}
请阅读用户指南关于配置解析器选项的部分以了解更多信息。
选项
该规则采用一个选项:值为"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 };
何时不使用它
如果您不关心在传播运算符及其表达式之间执行一致的间隔,则可以安全地禁用此规则。
进一步阅读
- ECMAScript版本的对象Rest/Spread属性此规则在ESLint 2.12.0.Resources中引入