版本

rest-spread-spacing

強制 rest 和 spread 運算符號及其表達式之間的間距

🔧 可修復

此規則報告的一些問題可以使用 --fix 命令列選項自動修復

此規則已在 ESLint v8.53.0 中棄用。請使用 @stylistic/eslint-plugin-js 中的相應規則

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" 時,此規則的不正確程式碼範例

在遊樂場中開啟
/*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" 選項時,spread 運算符號及其表達式之間需要有空格。

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

何時不使用它

如果您不關心強制 spread 運算符號及其表達式之間的間距一致性,您可以安全地禁用此規則。

版本

此規則是在 ESLint v2.12.0 中引入的。

進一步閱讀

資源

變更語言