Eslint
规则 | Rules

generator-star-spacing

围绕 * 生成器函数( 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

此规则的正确代码示例包含以下"before"选项:

/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/ /*eslint-env es6*/ function *generator() {} var anonymous = function *() {}; var shorthand = { *generator() {} };

after

Examples of correct code for this rule with the "after" option:

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

何时不使用它

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

进一步阅读