跳至内容

@stylistic/

generator-star-spacing

生成器是 ECMAScript 6 中一种新的函数类型,可以随着时间的推移返回多个值。这些特殊函数通过在 `function` 关键字后放置一个 `*` 来指示。

以下是一个生成器函数的示例

js
/*eslint-env es6*/

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

这也是有效的

js
/*eslint-env es6*/

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

这也是有效的

js
/*eslint-env es6*/

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

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

规则详细信息

此规则旨在强制执行生成器函数 `*` 周围的空格。

选项

此规则接受一个选项,一个对象,它有两个键 `“before”` 和 `“after”`,它们具有布尔值 `true` 或 `false`。

  • “before” 强制执行 `*` 和 `function` 关键字之间的空格。如果为 `true`,则需要空格,否则不允许空格。

    在对象字面量简写方法中,不会检查 `*` 之前的空格,因为它们缺少 `function` 关键字。

  • “after” 强制执行 `*` 和函数名(或匿名生成器函数的左括号)之间的空格。如果为 `true`,则需要空格,否则不允许空格。

默认值为 {"before": true, "after": false}

配置示例

json
"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"

简写配置示例

json
"generator-star-spacing": ["error", "after"]

此外,此规则允许通过每个函数类型的覆盖进行进一步配置。

  • named 为命名函数提供覆盖
  • anonymous 为匿名函数提供覆盖
  • method 为类方法或属性函数简写提供覆盖

带有覆盖的配置示例

json
"generator-star-spacing": ["error", {
    "before": false,
    "after": true,
    "anonymous": "neither",
    "method": {"before": true, "after": true}
}]

在上面的配置示例中,顶层的 "before""after" 选项定义了规则的默认行为,而 "anonymous""method" 选项覆盖了默认行为。覆盖可以是包含 "before""after" 的对象,也可以是如上所示的简写字符串。

示例

before

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

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

function *generator() {}

var anonymous = function *() {};

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

after

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

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

function* generator() {}

var anonymous = function* () {};

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

both

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

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

function * generator() {}

var anonymous = function * () {};

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

neither

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

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

function*generator() {}

var anonymous = function*() {};

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

带有覆盖的此规则的错误代码示例

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

带有覆盖的此规则的正确代码示例

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

何时不使用它

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