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つのオプション(オブジェクト)を受け付けます。このオブジェクトには、` "before"` と ` "after"` の2つのキーがあり、それぞれブール値 `true` または `false` を持ちます。
`"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/generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
after
`"after"` オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
both
`"both"` オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
neither
`"neither"` オプションを使用したこのルールの**正しい**コードの例
/*eslint @stylistic/generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };
オーバーライドが存在する場合のこのルールの**正しくない**コードの例
/*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() {} }
オーバーライドが存在する場合のこのルールの**正しい**コードの例
/*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() {} }
使用しない場合
プロジェクトでジェネレーターを使用しない場合、またはスペースの一貫性を気にしない場合は、このルールは必要ありません。