コンテンツへスキップ

@stylistic/

generator-star-spacing

ジェネレーターは、ECMAScript 6で導入された新しいタイプの関数であり、時間をかけて複数の値を返すことができます。これらの特別な関数は、`function`キーワードの後に`*`を配置することで示されます。

ジェネレーター関数の例を以下に示します。

js
/*eslint-env es6*/

function* generator() {
    yield "44";
    yield "55";
}

これも有効です

js
/*eslint-env es6*/

function *generator() {
    yield "44";
    yield "55";
}

これも有効です

js
/*eslint-env es6*/

function * generator() {
    yield "44";
    yield "55";
}

ジェネレーターを使用する場合の一貫性を保つために、このルールは`*`の位置を1つに統一します。

ルール詳細

このルールは、ジェネレーター関数の`*`の周りのスペースを強制することを目的としています。

オプション

このルールは、1つのオプション(オブジェクト)を受け付けます。このオブジェクトには、` "before"` と ` "after"` の2つのキーがあり、それぞれブール値 `true` または `false` を持ちます。

  • `"before"` は、`*`と`function`キーワードの間のスペースを強制します。`true` の場合、スペースが必要です。そうでない場合、スペースは許可されません。

    オブジェクトリテラルの簡略メソッドでは、`function`キーワードがないため、`*`の手前のスペースはチェックされません。

  • `"after"` は、`*`と関数名(または匿名ジェネレーター関数の開き括弧)の間のスペースを強制します。`true` の場合、スペースが必要です。そうでない場合、スペースは許可されません。

デフォルトは`{"before": true, "after": false}`です。

設定例

json
"generator-star-spacing": ["error", {"before": true, "after": false}]

オプションには、文字列キーワードによる省略形もあります。

  • `{"before": true, "after": false}` → `"before"`
  • `{"before": false, "after": true}` → `"after"`
  • `{"before": true, "after": true}` → `"both"`
  • `{"before": false, "after": false}` → `"neither"`

省略形の設定例

json
"generator-star-spacing": ["error", "after"]

さらに、このルールは、関数タイプごとにオーバーライドを使用して、より詳細な設定を可能にします。

  • `named` は、名前付き関数に対するオーバーライドを提供します。
  • `anonymous` は、匿名関数に対するオーバーライドを提供します。
  • `method` は、クラスメソッドまたはプロパティ関数簡略記法に対するオーバーライドを提供します。

オーバーライドを含む設定例

json
"generator-star-spacing": ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]

上記の例の設定では、最上位の`"before"`と`"after"`オプションがルールのデフォルトの動作を定義し、`"anonymous"`と`"method"`オプションがデフォルトの動作をオーバーライドします。オーバーライドは、`"before"`と`"after"`を持つオブジェクト、または上記の省略形文字列のいずれかになります。

before

`"before"` オプションを使用したこのルールの**正しい**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/

function *generator() {}

var anonymous = function *() {};

var shorthand = { *generator() {} };
correct

after

`"after"` オプションを使用したこのルールの**正しい**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/

function* generator() {}

var anonymous = function* () {};

var shorthand = { * generator() {} };
correct

both

`"both"` オプションを使用したこのルールの**正しい**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/

function * generator() {}

var anonymous = function * () {};

var shorthand = { * generator() {} };
correct

neither

`"neither"` オプションを使用したこのルールの**正しい**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/

function*generator() {}

var anonymous = function*() {};

var shorthand = { *generator() {} };
correct

オーバーライドが存在する場合のこのルールの**正しくない**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]*/
/*eslint-env es6*/

function 
*
generator() {}
var anonymous = function
*
() {};
var shorthand = {
*
generator() {} };
class Class { static
*
method() {} }
incorrect

オーバーライドが存在する場合のこのルールの**正しい**コードの例

js
/*eslint @stylistic/generator-star-spacing: ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]*/
/*eslint-env es6*/

function* generator() {}

var anonymous = function*() {};

var shorthand = { * generator() {} };

class Class { static * method() {} }
correct

使用しない場合

プロジェクトでジェネレーターを使用しない場合、またはスペースの一貫性を気にしない場合は、このルールは必要ありません。

MITライセンスの下でリリースされています。