Spec-Zone.ru › ESLint

бесполезные-вычисленные-ключи

Запретить ненужные вычисленные ключи свойств в объектах и классах

🔧 Исправимо

Некоторые проблемы, выявленные этим правилом, могут быть автоматически исправлены с помощью опции командной строки --fix командной строки

Не нужно использовать вычисленные свойства с литералами, такими как:

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

Код можно переписать так:

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

Подробное описание правила

Это правило запрещает ненужное использование вычисленных ключей свойств.

Примеры неправильного кода для этого правила:

Открыть в Playground
/*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']() {} };

var { [0]: a } = obj;
var { ['x']: a } = obj;

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

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

    static ["foo"] = "bar";

    static ['a']() {}
}

Примеры правильного кода для этого правила:

Открыть в Playground
/*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 };

var { 0: a } = obj;
var { 'x': a } = obj;

class Foo {
    "foo" = "bar";

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

    static "foo" = "bar";

    static 'a'() {}
}

Примеры дополнительного правильного кода для этого правила:

Открыть в Playground
/*eslint no-useless-computed-key: "error"*/

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

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

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 `[]`
}

Опции

Это правило имеет опцию объекта:

  • enforceForClassMembers значение false отключает это правило для членов класса (Значение по умолчанию true).

enforceForClassMembers

По умолчанию это правило также проверяет объявления и выражения классов, так как значение по умолчанию для enforceForClassMembers равно true.

Когда enforceForClassMembers установлено в false, правило позволит ненужные вычисленные ключи внутри полей класса, методов класса, геттеров класса и сетеров класса.

Примеры неправильного кода для этого правила с опцией { "enforceForClassMembers": false }:

Открыть в Playground
/*eslint no-useless-computed-key: ["error", { "enforceForClassMembers": false }]*/

const obj = {
    ["foo"]: "bar",
    [42]: "baz",

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

Примеры правильного кода для этого правила с опцией { "enforceForClassMembers": false }:

Открыть в Playground
/*eslint no-useless-computed-key: ["error", { "enforceForClassMembers": false }]*/

class SomeClass {
    ["foo"] = "bar";
    [42] = "baz";

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

    static ["foo"] = "bar";
    static ['baz']() {}
}

Когда не использовать

Если вы не хотите получать уведомления о ненужных вычисленных ключах свойств, вы можете безопасно отключить это правило.

Версия

Это правило было добавлено в ESLint v2.9.0.

Ресурсы

  • Исходный код правила
  • Исходный код тестов

© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/no-useless-computed-key

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API