generator-star-spacing
生成器是 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" 和 "after" 的对象,也可以是如上所示的简写字符串。
示例
before
使用 "before" 选项的此规则的正确代码示例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": true, "after": false}]*/
/*eslint-env es6*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };after
使用 "after" 选项的此规则的正确代码示例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": false, "after": true}]*/
/*eslint-env es6*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };both
使用 "both" 选项的此规则的正确代码示例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": true, "after": true}]*/
/*eslint-env es6*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };neither
使用 "neither" 选项的此规则的正确代码示例
/*eslint @stylistic/js/generator-star-spacing: ["error", {"before": false, "after": false}]*/
/*eslint-env es6*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };包含覆盖的此规则的错误代码示例
/*eslint @stylistic/js/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 @stylistic/js/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() {} }何时不使用它
如果您的项目不会使用生成器,或者您不关心间距一致性,则不需要此规则。