rest-spread-spacing
ES2015では、反復可能な構造体を個々の要素に展開するrestとspread演算子が導入されました。使用例を以下に示します。
js
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プロパティを仕様に追加する提案があります。それらは次のように使用できます。
js
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プロパティもサポートしています。
json
{
"parserOptions": {
"ecmaVersion": 2018
}
}
詳しくは、ユーザーガイドのパーサーオプションの設定に関するセクションをご覧ください。
オプション
このルールは、"never"
または"always"
の値を持つ文字列である1つのオプションを受け取ります。デフォルト値は"never"
です。
"never"
デフォルトの"never"
オプションを使用する場合、spread演算子とその式の間には空白を許容しません。
json
rest-spread-spacing: ["error"]
または
json
rest-spread-spacing: ["error", "never"]
"never"
を使用したこのルールの**不正な**コードの例
js
/*eslint @stylistic/js/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 };
incorrect
"never"
を使用したこのルールの**正しい**コードの例
js
/*eslint @stylistic/js/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 };
correct
"always"
"always"
オプションを使用する場合、spread演算子とその式の間には空白が必要です。
json
rest-spread-spacing: ["error", "always"]
"always"
を使用したこのルールの**不正な**コードの例
js
/*eslint @stylistic/js/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 };
incorrect
"always"
を使用したこのルールの**正しい**コードの例
js
/*eslint @stylistic/js/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 };
correct
使用しない場合
spread演算子とその式の間の一貫したスペースを適用することに関心がない場合は、このルールを安全に無効化できます。