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";
}
为了保持使用生成器时的一致性,这个规则强制执行一个单独的位置*
。
规则细节
该规则旨在强化*
发生器功能的间距。
选项
该规则采用一个选项,一个对象,它有两个键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
此规则的正确
代码示例包含以下"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() {} }
何时不使用它
如果您的项目不会使用生成器,或者您不关心间距一致性,则不需要此规则。
进一步阅读
- 了解 ES6:生成器版本此规则是在 ESLint 0.17.0.Resources 中引入的