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"]*/
objfoo
var x = {b: a}
obj[ foo
obj'foo' ]
objfoo[ 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 中引入。