Skip to content
← Back to rules

eslint/no-useless-computed-key 风格

An auto-fix is available for this rule.

它的作用

禁止在对象和类中使用不必要的计算属性键

为什么这是不好的?

使用字面量作为计算属性键是多余的,例如:

js
const foo = { ["a"]: "b" };

该代码可以重写为:

js
const foo = { a: "b" };

示例

此规则的 错误 代码示例:

js
const a = { ["0"]: 0 };
const b = { ["0+1,234"]: 0 };
const c = { [0]: 0 };
const e = { ["x"]() {} };

class Foo {
  ["foo"] = "bar";
  [0]() {}
  static ["foo"] = "bar";
  get ["b"]() {}
  set ["c"](value) {}
}

此规则的 正确 代码示例:

js
const a = { a: 0 };
const b = { 0: 0 };
const c = { x() {} };
const e = { "0+1,234": 0 };

class Foo {
  foo = "bar";
  0() {}
  a() {}
  static foo = "bar";
}

此规则的额外 正确 代码示例:

js
const c = {
  __proto__: foo, // 定义对象的原型
  ["__proto__"]: bar, // 定义一个名为 "__proto__" 的属性
};
class Foo {
  ["constructor"]; // 名为 "constructor" 的实例字段
  constructor() {} // 该类的构造函数
  static ["constructor"]; // 名为 "constructor" 的静态字段
  static ["prototype"]; // 运行时错误,若无 `[]` 将会是解析错误
}

配置

此规则接受一个配置对象,包含以下属性:

enforceForClassMembers

type: boolean

default: true

enforceForClassMembers 选项控制该规则是否适用于类成员(方法和属性)。

在配置 { "enforceForClassMembers": false } 下,此规则的 正确 代码示例:

js
class SomeClass {
  ["foo"] = "bar";
  [42] = "baz";
  get ["b"]() {}
  set ["c"](value) {}
  static ["foo"] = "bar";
}

如何使用

要通过配置文件或 CLI 启用 此规则,可以使用:

json
{
  "rules": {
    "no-useless-computed-key": "error"
  }
}
bash
oxlint --deny no-useless-computed-key

参考资料