# generator-star-spacing

在生成器函数中强制围绕 * 运算符保持一致的间距

一些该规则报告的问题可以通过 --fix 命令行选项 自动修复

生成器是 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";
}

为了在使用生成器时保持一致性,此规则对 * 强制执行单个位置。

# 规则详情

该规则旨在强制生成器函数的 * 周围的间距。

# 选项

该规则采用一个选项,一个对象,它有两个键 beforeafter,其布尔值 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

此规则使用 "before" 选项的正确代码示例:

/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/

function *generator() {}

var anonymous = function *() {};

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

# after

此规则使用 "after" 选项的正确代码示例:

/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/

function* generator() {}

var anonymous = function* () {};

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

# both

此规则使用 "both" 选项的正确代码示例:

/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/

function * generator() {}

var anonymous = function * () {};

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

# neither

此规则使用 "neither" 选项的正确代码示例:

/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/

function*generator() {}

var anonymous = function*() {};

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

存在覆盖的此规则的错误代码示例:

/*eslint 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 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() {} }

# 何时不使用

如果您的项目不使用生成器,或者您不关心间距一致性,则不需要此规则。

Last Updated: 5/13/2023, 8:55:38 PM