Skip to content
← Back to rules

eslint/prefer-spread スタイル

何ができるか

可変長引数関数を呼び出す際に、spread 演算子を使用することを要求します。

なぜ悪いのか

ES2015以前は、可変長引数関数を呼び出すために Function.prototype.apply() を使用しなければなりませんでした。

javascript
var args = [1, 2, 3, 4];
Math.max.apply(Math, args);

ES2015以降では、spread 構文を使用して可変長引数関数を呼び出すことができます。

javascript
var args = [1, 2, 3, 4];
Math.max(...args);

このルールに違反する不正なコードの例

javascript
foo.apply(undefined, args);
foo.apply(null, args);
obj.foo.apply(obj, args);

このルールに準拠する正しいコードの例

javascript
// spread 構文の使用
foo(...args);
obj.foo(...args);

// `this` のバインディングが異なる。
foo.apply(obj, args);
obj.foo.apply(null, args);
obj.foo.apply(otherObj, args);

// 引数リストが可変長ではない。
// これらのケースは `no-useless-call` ルールで警告されます。
foo.apply(undefined, [1, 2, 3]);
foo.apply(null, [1, 2, 3]);
obj.foo.apply(obj, [1, 2, 3]);

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、以下の通りです:

json
{
  "rules": {
    "prefer-spread": "error"
  }
}
bash
oxlint --deny prefer-spread

参照