generator-star-spacing
在生成器函数中强制在*
运算符周围使用一致的间距
此规则报告的一些问题可以通过 --fix
命令行 选项自动修复
此规则已在 ESLint v8.53.0 中弃用。请在 @stylistic/eslint-plugin-js
中使用相应的规则。
生成器是 ECMAScript 6 中一种新的函数类型,它可以随着时间的推移返回多个值。这些特殊函数通过在 function
关键字后放置一个 *
来指示。
以下是一个生成器函数的示例
function* generator() {
yield "44";
yield "55";
}
这也是有效的
function *generator() {
yield "44";
yield "55";
}
这也是有效的
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"
选项的正确代码示例
/*eslint generator-star-spacing: ["error", {"before": true, "after": false}]*/
function *generator() {}
var anonymous = function *() {};
var shorthand = { *generator() {} };
之后
此规则使用 "after"
选项的正确代码示例
/*eslint generator-star-spacing: ["error", {"before": false, "after": true}]*/
function* generator() {}
var anonymous = function* () {};
var shorthand = { * generator() {} };
两者
此规则使用 "both"
选项的正确代码示例
/*eslint generator-star-spacing: ["error", {"before": true, "after": true}]*/
function * generator() {}
var anonymous = function * () {};
var shorthand = { * generator() {} };
两者都不
此规则使用 "neither"
选项的正确代码示例
/*eslint generator-star-spacing: ["error", {"before": false, "after": false}]*/
function*generator() {}
var anonymous = function*() {};
var shorthand = { *generator() {} };
此规则使用覆盖存在的不正确代码示例
/*eslint generator-star-spacing: ["error", {
"before": false,
"after": true,
"anonymous": "neither",
"method": {"before": true, "after": true}
}]*/
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}
}]*/
function* generator() {}
var anonymous = function*() {};
var shorthand = { * generator() {} };
class Class { static * method() {} }
何时不使用它
如果您的项目不会使用生成器,或者您不关心间距一致性,则不需要此规则。
版本
此规则是在 ESLint v0.17.0 中引入的。