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"
禁止在類別成員之後有空行Object
:具有名為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 中引入的。