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() {} }使用しない場合
プロジェクトでジェネレーターを使用しない場合、またはスペースの一貫性を気にしない場合は、このルールは必要ありません。