Spec-Zone.ru › ESLint

Запрет на определённый синтаксис

Запрещает указанный синтаксис

В JavaScript много языковых возможностей, и не всем нравятся все они. В результате некоторые проекты предпочитают полностью запретить использование определённых языковых возможностей. Например, вы можете запретить использование try-catch или class, или вы можете запретить использование оператора in.

Вместо того, чтобы создавать отдельные правила для каждой языковой возможности, которую вы хотите отключить, это правило позволяет настроить элементы синтаксиса, использование которых вы хотите ограничить. Эти элементы представлены типами узлов ESTree. Например, объявление функции представлено FunctionDeclaration, а инструкция with представлена WithStatement. Полный список имён узлов AST вы можете найти на GitHub и использовать AST Explorer с парсером espree, чтобы увидеть, из каких типов узлов состоит ваш код.

Вы также можете указать селекторы AST для ограничения, что позволит гораздо точнее контролировать шаблоны синтаксиса.

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

Это правило запрещает указанный (то есть определённый пользователем) синтаксис.

Параметры

Это правило принимает список строк, где каждая строка — селектор AST:

{
    "rules": {
        "no-restricted-syntax": ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"]
    }
}

В качестве альтернативы, правило также принимает объекты, где указаны селектор и необязательное пользовательское сообщение:

{
    "rules": {
        "no-restricted-syntax": [
            "error",
            {
                "selector": "FunctionExpression",
                "message": "Function expressions are not allowed."
            },
            {
                "selector": "CallExpression[callee.name='setTimeout'][arguments.length!=2]",
                "message": "setTimeout must always be invoked with two arguments."
            }
        ]
    }
}

Если пользовательское сообщение указано с помощью свойства message, ESLint будет использовать это сообщение при сообщении о случаях синтаксиса, указанного в свойстве selector.

Строчные и объектные форматы могут быть свободно смешаны в конфигурации по мере необходимости.

Примеры некорректного кода для этого правила с параметрами "FunctionExpression", "WithStatement", BinaryExpression[operator='in']:

Открыть в Playground
/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */

with(me){dontMess();}

var doSomething = function () {};

foo in bar;

Примеры корректного кода для этого правила с параметрами "FunctionExpression", "WithStatement", BinaryExpression[operator='in']:

Открыть в Playground
/* eslint no-restricted-syntax: ["error", "FunctionExpression", "WithStatement", "BinaryExpression[operator='in']"] */

me.dontMess();

function doSomething() {};

foo instanceof bar;

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

Если вы не хотите ограничивать использование каких-либо функций или синтаксиса JavaScript, не следует использовать это правило.

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

  • no-alert
  • no-console
  • no-debugger
  • no-restricted-properties

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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