# no-useless-computed-key

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

一些该规则报告的问题可以通过 --fix 命令行选项 自动修复

没有必要将计算属性与字面一起使用,例如:

var foo = {["a"]: "b"};

代码可以重写为:

var foo = {"a": "b"};

# 规则详情

此规则不允许不必要地使用计算的属性键。

此规则的错误代码示例:

/*eslint no-useless-computed-key: "error"*/

var a = { ['0']: 0 };
var a = { ['0+1,234']: 0 };
var a = { [0]: 0 };
var a = { ['x']: 0 };
var a = { ['x']() {} };

此规则的正确代码示例:

/*eslint no-useless-computed-key: "error"*/

var c = { 'a': 0 };
var c = { 0: 0 };
var a = { x() {} };
var c = { a: 0 };
var c = { '0+1,234': 0 };

此规则的附加正确代码示例:

/*eslint no-useless-computed-key: "error"*/

var c = {
    "__proto__": foo, // defines object's prototype

    ["__proto__"]: bar // defines a property named "__proto__"
};

# 选项

此规则有一个对象选项:

  • enforceForClassMembers 设置为 true 还会将此规则应用于类成员(默认 false)。

# enforceForClassMembers

默认情况下,此规则不检查类声明和类表达式,因为 enforceForClassMembers 的默认值为 false

enforceForClassMembers 设置为 true 时,该规则还将禁止类字段、类方法、类 getter 和类 s​​etter 内不必要的计算键。

此规则使用 { "enforceForClassMembers": true } 选项的错误代码示例:

/*eslint no-useless-computed-key: ["error", { "enforceForClassMembers": true }]*/

class Foo {
    ["foo"] = "bar";

    [0]() {}
    ['a']() {}
    get ['b']() {}
    set ['c'](value) {}

    static ["foo"] = "bar";

    static ['a']() {}
}

此规则使用 { "enforceForClassMembers": true } 选项的正确代码示例:

/*eslint no-useless-computed-key: ["error", { "enforceForClassMembers": true }]*/

class Foo {
    "foo" = "bar";

    0() {}
    'a'() {}
    get 'b'() {}
    set 'c'(value) {}

    static "foo" = "bar";

    static 'a'() {}
}

此规则使用 { "enforceForClassMembers": true } 选项的其他正确代码示例:

/*eslint no-useless-computed-key: ["error", { "enforceForClassMembers": true }]*/

class Foo {
    ["constructor"]; // instance field named "constructor"

    "constructor"() {} // the constructor of this class

    ["constructor"]() {} // method named "constructor"

    static ["constructor"]; // static field named "constructor"

    static ["prototype"]; // runtime error, it would be a parsing error without `[]`
}

# 何时不使用

如果您不想收到有关不必要的计算属性键的通知,您可以安全地禁用此规则。

Last Updated: 5/13/2023, 8:55:38 PM