Spec-Zone.ru › ESLint

no-confusing-arrow

Запрещает использовать функции-стрелки в случаях, когда их можно спутать с операторами сравнения

🔧 Исправляется автоматически

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

Важно

Это правило было устаревшим в ESLint v8.53.0. Оно будет удалено в v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.

Подробнее

Функции-стрелки (=>) имеют синтаксис, похожий на синтаксис некоторых операторов сравнения (>, <, <= и >=). Это правило предупреждает об использовании синтаксиса функций-стрелок в местах, где его можно спутать с оператором сравнения.

Ниже приведён пример, в котором использование => может вызвать путаницу:

// The intent is not clear
var x = a => 1 ? 2 : 3;
// Did the author mean this
var x = function (a) {
    return 1 ? 2 : 3;
};
// Or this
var x = a <= 1 ? 2 : 3;

Описание правила

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

Открыть в Playground
/*eslint no-confusing-arrow: "error"*/

var x = a => 1 ? 2 : 3;
var x = (a) => 1 ? 2 : 3;

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

Открыть в Playground
/*eslint no-confusing-arrow: "error"*/

var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);
var x = (a) => {
    return 1 ? 2 : 3;
};
var x = a => { return 1 ? 2 : 3; };

Параметры

Это правило принимает два аргумента-параметра со следующими значениями по умолчанию:

{
    "rules": {
        "no-confusing-arrow": [
            "error",
            { "allowParens": true, "onlyOneSimpleParam": false }
        ]
    }
}

allowParens — это логический параметр, который может иметь значение true (по умолчанию) или false:

  1. true смягчает правило и считает скобки допустимым синтаксисом, предотвращающим путаницу.
  2. false выдаёт предупреждение, даже если выражение заключено в скобки

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

Открыть в Playground
/*eslint no-confusing-arrow: ["error", {"allowParens": false}]*/

var x = a => (1 ? 2 : 3);
var x = (a) => (1 ? 2 : 3);

onlyOneSimpleParam — это логический параметр, который может иметь значение true или false (по умолчанию):

  1. true смягчает правило и не сообщает об ошибках, если у функции-стрелки нет параметров, их больше одного или параметр не является идентификатором.
  2. false выдаёт предупреждение независимо от параметров.

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

Открыть в Playground
/*eslint no-confusing-arrow: ["error", {"onlyOneSimpleParam": true}]*/

() => 1 ? 2 : 3;
(a, b) => 1 ? 2 : 3;
(a = b) => 1 ? 2 : 3;
({ a }) => 1 ? 2 : 3;
([a]) => 1 ? 2 : 3;
(...a) => 1 ? 2 : 3;

Связанные правила

  • no-constant-condition
  • arrow-parens

Версия

Это правило добавлено в ESLint v2.0.0-alpha-2.

Ресурсы

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

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

Spec-Zone.ru

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