lines-between-class-members
要求或禁止类成员之间有空行
🔧 可修复
此规则报告的一些问题可以通过--fix
命令行选项自动修复。
此规则已在 ESLint v8.53.0 中**弃用**。请使用 相应的规则 在 @stylistic/eslint-plugin-js
中。
此规则通过在类成员之间强制执行空行来提高可读性。它不会检查第一个成员之前和最后一个成员之后的空行,因为这已由 padded-blocks 处理。
规则详情
此规则的错误代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always"]*/
class MyClass {
x;
}
此规则的正确代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always"]*/
class MyClass {
x;
foo() {
//...
}
bar() {
//...
}
}
此规则的其他正确代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always"]*/
class MyClass {
x = 1
;in = 2
}
选项
此规则有两个选项,第一个选项可以是字符串或对象,第二个选项是对象。
第一个选项可以是字符串"always"
或"never"
或具有名为enforce
的属性的对象
"always"
(默认)要求在类成员之后有一个空行"never"
禁止在类成员之后有一个空行对象
:一个具有名为enforce
的属性的对象。enforce 属性应为对象数组,每个对象指定在特定类成员对之间强制执行空行的配置。- enforce:您可以提供任意数量的配置。如果成员对匹配多个配置,则将使用最后一个匹配的配置。如果成员对与任何配置都不匹配,则将被忽略。每个对象应具有以下属性
- blankLine:可以设置为
"always"
或"never"
,指示在指定的成员之间是否需要或禁止空行。 - prev:指定前一个类成员的类型。它可以是类方法的
"method"
,类字段的"field"
或任何类成员的"*"
。 - next:指定后续类成员的类型。它遵循与
prev
相同的选项。
- blankLine:可以设置为
- enforce:您可以提供任意数量的配置。如果成员对匹配多个配置,则将使用最后一个匹配的配置。如果成员对与任何配置都不匹配,则将被忽略。每个对象应具有以下属性
第二个选项是一个具有名为exceptAfterSingleLine
的属性的对象
"exceptAfterSingleLine": false
(默认)不跳过检查单行类成员之后的空行"exceptAfterSingleLine": true
跳过检查单行类成员之后的空行
使用字符串选项的此规则的错误代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always"]*/
class Foo{
x;
}
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "never"]*/
class Bar{
x;
}
使用字符串选项的此规则的正确代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always"]*/
class Foo{
x;
bar(){}
baz(){}
}
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "never"]*/
class Bar{
x;
bar(){}
baz(){}
}
使用配置数组选项的此规则的错误代码示例
在代码游乐场中打开
// disallows blank lines between methods
/*eslint lines-between-class-members: [
"error",
{
enforce: [
{ blankLine: "never", prev: "method", next: "method" }
]
},
]*/
class MyClass {
constructor(height, width) {
this.height = height;
this.width = width;
}
fieldA = 'Field A';
#fieldB = 'Field B';
method1() {}
}
在代码游乐场中打开
// requires blank lines around fields, disallows blank lines between methods
/*eslint lines-between-class-members: [
"error",
{
enforce: [
{ blankLine: "always", prev: "*", next: "field" },
{ blankLine: "always", prev: "field", next: "*" },
{ blankLine: "never", prev: "method", next: "method" }
]
},
]*/
class MyClass {
constructor(height, width) {
this.height = height;
this.width = width;
}
}
使用配置数组选项的此规则的正确代码示例
在代码游乐场中打开
// disallows blank lines between methods
/*eslint lines-between-class-members: [
"error",
{
enforce: [
{ blankLine: "never", prev: "method", next: "method" }
]
},
]*/
class MyClass {
constructor(height, width) {
this.height = height;
this.width = width;
}
fieldA = 'Field A';
#fieldB = 'Field B';
method1() {}
get area() {
return this.method1();
}
method2() {}
}
在代码游乐场中打开
// requires blank lines around fields, disallows blank lines between methods
/*eslint lines-between-class-members: [
"error",
{
enforce: [
{ blankLine: "always", prev: "*", next: "field" },
{ blankLine: "always", prev: "field", next: "*" },
{ blankLine: "never", prev: "method", next: "method" }
]
},
]*/
class MyClass {
constructor(height, width) {
this.height = height;
this.width = width;
}
fieldA = 'Field A';
#fieldB = 'Field B';
method1() {}
get area() {
return this.method1();
}
method2() {}
}
使用对象选项的此规则的正确代码示例
在代码游乐场中打开
/* eslint lines-between-class-members: ["error", "always", { "exceptAfterSingleLine": true }]*/
class Foo{
x; // single line class member
bar(){} // single line class member
baz(){
// multi line class member
}
qux(){}
}
在代码游乐场中打开
/*eslint lines-between-class-members: [
"error",
{
enforce: [
{ blankLine: "always", prev: "*", next: "method" },
{ blankLine: "always", prev: "method", next: "*" },
{ blankLine: "always", prev: "field", next: "field" }
]
},
{ exceptAfterSingleLine: true }
]*/
class MyClass {
constructor(height, width) {
this.height = height;
this.width = width;
}
fieldA = 'Field A';
#fieldB = 'Field B';
method1() {}
get area() {
return this.method1();
}
method2() {}
}
何时不使用它
如果您不想在类成员之间强制执行空行,您可以禁用此规则。
兼容性
相关规则
版本
此规则是在 ESLint v4.9.0 中引入的。