版本

generator-star-spacing

強制生成器函式中 * 運算符號周圍的一致間距

🔧 可修正

此規則報告的某些問題可以透過 --fix 命令列 選項自動修正

重要事項

此規則已在 ESLint v8.53.0 中棄用。請使用 @stylistic/eslint-plugin-js 中的對應規則

了解更多

生成器是 ECMAScript 6 中的一種新型函式,可以隨著時間推移傳回多個值。這些特殊函式透過在 function 關鍵字後放置 * 來表示。

以下是一個生成器函式的範例

function* generator() {
    yield "44";
    yield "55";
}

這也是有效的

function *generator() {
    yield "44";
    yield "55";
}

這也是有效的

function * generator() {
    yield "44";
    yield "55";
}

為了在使用生成器時保持一致性,此規則強制執行 * 的單一位置。

規則細節

此規則旨在強制執行生成器函式的 * 周圍的間距。

選項

此規則接受一個選項,即一個物件,其中有兩個鍵 "before""after",其布林值為 truefalse

  • "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" 選項下的正確程式碼範例

在 Playground 中開啟
/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/

function *generator() {}

var anonymous = function *() {};

var shorthand = { *generator() {} };

之後

此規則在 "after" 選項下的正確程式碼範例

在 Playground 中開啟
/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/

function* generator() {}

var anonymous = function* () {};

var shorthand = { * generator() {} };

兩者

此規則在 "both" 選項下的正確程式碼範例

在 Playground 中開啟
/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/

function * generator() {}

var anonymous = function * () {};

var shorthand = { * generator() {} };

皆無

此規則在 "neither" 選項下的正確程式碼範例

在 Playground 中開啟
/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/

function*generator() {}

var anonymous = function*() {};

var shorthand = { *generator() {} };

此規則在存在覆寫時的不正確程式碼範例

在 Playground 中開啟
/*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() {} }

此規則在存在覆寫時的正確程式碼範例

在 Playground 中開啟
/*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 中引入。

延伸閱讀

資源

變更語言