eslint/no-useless-computed-key 风格
它的作用
禁止在对象和类中使用不必要的计算属性键
为什么这是不好的?
使用字面量作为计算属性键是多余的,例如:
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