首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

rest-spread-spacing

--fix命令行上的选项可以自动修复一些被这条规则反映的问题。

ES2015介绍了剩余的和扩展的运营商,这些运营商将可迭代的结构扩展到其各个部分。其用法的一些例子如下:

代码语言:javascript
复制
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属性添加到规范中。他们可以使用如下:

代码语言:javascript
复制
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属性:

代码语言:javascript
复制
{
    "parserOptions": {
        "ecmaVersion": 6,
        "ecmaFeatures": {
            "experimentalObjectRestSpread": true
        }
    }
}

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

选项

该规则采用一个选项:值为"never"或的字符串"always"。默认值是"never"

“never”

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

代码语言:javascript
复制
rest-spread-spacing: ["error"]

要么

代码语言:javascript
复制
rest-spread-spacing: ["error", "never"]

"never"规则的错误代码示例:

代码语言:javascript
复制
/*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"规则的正确代码示例:

代码语言:javascript
复制
/*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"选项时,扩展运算符及其表达式之间需要空格。

代码语言:javascript
复制
rest-spread-spacing: ["error", "always"]

此规则的错误代码示例"always"

代码语言:javascript
复制
/*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"

代码语言:javascript
复制
/*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 };

何时不使用它

如果您不关心在传播运算符及其表达式之间执行一致的间隔,则可以安全地禁用此规则。

进一步阅读

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com