コンテンツにスキップ

@stylistic/js/

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つのオプション(オブジェクト)を取ります。このオブジェクトには、ブール値trueまたはfalseを持つ2つのキー"before""after"があります。

  • "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/js/generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/

function *generator() {}

var anonymous = function *() {};

var shorthand = { *generator() {} };
正しい

after

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

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

function* generator() {}

var anonymous = function* () {};

var shorthand = { * generator() {} };
正しい

both

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

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

function * generator() {}

var anonymous = function * () {};

var shorthand = { * generator() {} };
正しい

neither

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

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

function*generator() {}

var anonymous = function*() {};

var shorthand = { *generator() {} };
正しい

オーバーライドが存在する場合のこのルールの**誤った**コードの例

js
/*eslint @stylistic/js/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() {} }
誤った

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

js
/*eslint @stylistic/js/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() {} }
正しい

使用しない場合

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

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