computed-property-spacing
強制在計算屬性括號內保持一致的間距
🔧 可修正
此規則報告的某些問題可以透過 --fix
命令列 選項自動修正
雖然格式化偏好非常個人化,但許多樣式指南要求或禁止在以下情況下計算屬性之間使用空格
var obj = { prop: "value" };
var a = "prop";
var x = obj[a]; // computed property in object member expression
var a = "prop";
var obj = {
[a]: "value" // computed property key in object literal (ECMAScript 6)
};
var obj = { prop: "value" };
var a = "prop";
var { [a]: x } = obj; // computed property key in object destructuring pattern (ECMAScript 6)
規則詳細資訊
此規則強制計算屬性括號內保持一致的間距。
它要求或禁止在括號和它們內部的值之間使用空格。此規則不適用於與相鄰值以換行符分隔的括號。
選項
此規則有兩個選項:字串選項和物件選項。
字串選項
"never"
(預設) 禁止在計算屬性括號內使用空格"always"
要求在計算屬性括號內使用一個或多個空格
物件選項
"enforceForClassMembers": true
(預設) 額外將此規則應用於類別成員。
never
使用預設 "never"
選項時,不正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "never"]*/
obj[foo]
obj['foo']
var x = {[ b]: a}
obj[foo[ bar]]
const { [ a]: someProp } = obj;
({ [ b]: anotherProp } = anotherObj);
使用預設 "never"
選項時,正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "never"]*/
obj[foo]
obj['foo']
var x = {[b]: a}
obj[foo[bar]]
const { [a]: someProp } = obj;
({ [b]: anotherProp } = anotherObj);
always
使用 "always"
選項時,不正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "always"]*/
obj foo
var x = { b: a}
obj[ foo
obj'foo' ]
obj foo[ bar ]
var x = {[ b: a}
const { a: someProp } = obj;
({ b ]: anotherProp } = anotherObj);
使用 "always"
選項時,正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "always"]*/
obj[ foo ]
obj[ 'foo' ]
var x = {[ b ]: a}
obj[ foo[ bar ] ]
const { [ a ]: someProp } = obj;
({ [ b ]: anotherProp } = anotherObj);
enforceForClassMembers
當 enforceForClassMembers
設定為 true
(預設) 時,此規則也禁止/強制類別方法、getter 和 setter 的計算鍵內部使用空格。
使用 "never"
和 { "enforceForClassMembers": true }
(預設) 時,不正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
class Foo {
[a]() {}
get [b]() {}
set [b](value) {}
}
const Bar = class {
[ a](){}
static [ b]() {}
static get [ c]() {}
static set [ c](value) {}
}
使用 "never"
和 { "enforceForClassMembers": true }
(預設) 時,正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": true }]*/
class Foo {
[a]() {}
get [b]() {}
set [b](value) {}
}
const Bar = class {
[a](){}
static [b]() {}
static get [c]() {}
static set [c](value) {}
}
使用 "never"
和 { "enforceForClassMembers": false }
時,正確程式碼範例
在 Playground 中開啟
/*eslint computed-property-spacing: ["error", "never", { "enforceForClassMembers": false }]*/
class Foo {
[a ]() {}
get [b ]() {}
set [b ](value) {}
}
const Bar = class {
[ a](){}
static [ b]() {}
static get [ c ]() {}
static set [ c ](value) {}
}
何時不該使用
如果您不關心計算屬性的一致性,則可以關閉此規則。
相關規則
版本
此規則在 ESLint v0.23.0 中引入。