generator-star-spacing
ジェネレーターは、ECMAScript 6 の新しいタイプの関数で、時間をかけて複数の値を返すことができます。これらの特別な関数は、function
キーワードの後に*
を付けることで示されます。
ジェネレーター関数の例を次に示します
/*eslint-env es6*/
function* generator() {
yield "44";
yield "55";
}
これも有効です
/*eslint-env es6*/
function *generator() {
yield "44";
yield "55";
}
これも有効です
/*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}
です。
設定例
"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"
省略形の設定例
"generator-star-spacing": ["error", "after"]
さらに、このルールでは、関数タイプごとのオーバーライドを介して、さらに設定をカスタマイズできます。
named
は、名前付き関数のオーバーライドを提供しますanonymous
は、匿名関数のオーバーライドを提供しますmethod
は、クラスメソッドまたはプロパティ関数省略形のオーバーライドを提供します
オーバーライドを含む設定例
"generator-star-spacing": ["error", {
"before": false,
"after": true,
"anonymous": "neither",
"method": {"before": true, "after": true}
}]
上記の例の設定では、トップレベルの"before"
および"after"
オプションがルールのデフォルトの動作を定義し、"anonymous"
および"method"
オプションがデフォルトの動作をオーバーライドします。オーバーライドは、"before"
と"after"
を持つオブジェクト、または上記の省略形の文字列のいずれかになります。
例
before
"before"
オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
after
"after"
オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
both
"both"
オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
neither
"neither"
オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };
オーバーライドが存在する場合のこのルールの**誤った**コードの例
/*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() {} }
オーバーライドが存在する場合のこのルールの**正しい**コードの例
/*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() {} }
使用しない場合
プロジェクトでジェネレーターを使用しない場合、またはスペースの一貫性を気にしない場合は、このルールは必要ありません。