Eslint
规则 | Rules

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 };

何时不使用它

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

进一步阅读