
generator-star-spacing
強制生成器函式中 *
運算符號周圍的一致間距
此規則報告的某些問題可以透過 --fix
命令列 選項自動修正
生成器是 ECMAScript 6 中的一種新型函式,可以隨著時間推移傳回多個值。這些特殊函式透過在 function
關鍵字後放置 *
來表示。
以下是一個生成器函式的範例
function* generator() {
yield "44";
yield "55";
}
這也是有效的
function *generator() {
yield "44";
yield "55";
}
這也是有效的
function * generator() {
yield "44";
yield "55";
}
為了在使用生成器時保持一致性,此規則強制執行 *
的單一位置。
規則細節
此規則旨在強制執行生成器函式的 *
周圍的間距。
選項
此規則接受一個選項,即一個物件,其中有兩個鍵 "before"
和 "after"
,其布林值為 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"
選項下的正確程式碼範例
/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
之後
此規則在 "after"
選項下的正確程式碼範例
/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
兩者
此規則在 "both"
選項下的正確程式碼範例
/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
皆無
此規則在 "neither"
選項下的正確程式碼範例
/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };
此規則在存在覆寫時的不正確程式碼範例
/*eslint generator-star-spacing: ["error", {
"before": false,
"after": true,
"anonymous": "neither",
"method": {"before": true, "after": true}
}]*/
function generator() {}
var anonymous = function () {};
var shorthand = { generator() {} };
class Class { static method() {} }
此規則在存在覆寫時的正確程式碼範例
/*eslint generator-star-spacing: ["error", {
"before": false,
"after": true,
"anonymous": "neither",
"method": {"before": true, "after": true}
}]*/
function* generator() {}
var anonymous = function*() {};
var shorthand = { * generator() {} };
class Class { static * method() {} }
何時不該使用
如果您的專案不會使用生成器,或者您不關心間距一致性,則不需要此規則。
版本
此規則在 ESLint v0.17.0 中引入。
延伸閱讀
