Spec-Zone.ru › ESLint

Запятая-висящая

Требовать или запрещать запятые в конце

🔧 Исправимо

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

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

Запятые в конце объектов допустимы в соответствии со спецификацией ECMAScript 5 (и ECMAScript 3!). Однако IE8 (когда не в режиме документа IE8) и ниже выдаст ошибку, когда встретит запятые в конце в JavaScript.

var foo = {
    bar: "baz",
    qux: "quux",
};

Запятые в конце упрощают добавление и удаление элементов в объекты и массивы, так как нужно изменить только те строки, которые вы изменяете. Другой аргумент в пользу запятых в конце заключается в том, что это улучшает ясность изменений, когда элемент добавляется или удаляется из объекта или массива:

Менее понятно:

var foo = {
-    bar: "baz",
-    qux: "quux"
+    bar: "baz"
};

Более понятно:

var foo = {
    bar: "baz",
-    qux: "quux",
};

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

Это правило навязывает согласованное использование запятых в конце объектов и массивов.

Параметры

Это правило имеет строковый параметр или параметр объекта:

{
    "comma-dangle": ["error", "never"],
    // or
    "comma-dangle": ["error", {
        "arrays": "never",
        "objects": "never",
        "imports": "never",
        "exports": "never",
        "functions": "never"
    }]
}
  • "never" (по умолчанию) запрещает запятые в конце
  • "always" требует запятых в конце
  • "always-multiline" требует запятых в конце, когда последний элемент или свойство находится в различной строке, чем закрывающая ] или }, и запрещает запятые в конце, когда последний элемент или свойство находится в той же строке, что и закрывающая ] или }
  • "only-multiline" разрешает (но не требует) запятых в конце, когда последний элемент или свойство находится в различной строке, чем закрывающая ] или }, и запрещает запятые в конце, когда последний элемент или свойство находится в той же строке, что и закрывающая ] или }

Вы также можете использовать параметр объекта для настройки этого правила для каждого типа синтаксиса. Каждый из следующих параметров может быть настроен на "never", "always", "always-multiline", "only-multiline", или "ignore". По умолчанию для каждого параметра значение "never" , если не указано иное.

  • arrays относится к массивам литералов и массивам шаблонов разбора. (например, let [a,] = [1,];)
  • objects относится к объектам литералов и объектам шаблонов разбора. (например, let {a,} = {a: 1};)
  • imports относится к декларациям импорта ES Modules. (например, import {a,} from "foo";)
  • exports относится к декларациям экспорта ES Modules. (например, export {a,};)
  • functions относится к декларациям и вызовам функций. (например, (function(a,){ })(b,);)
    • functions следует включать только при проверке ECMAScript 2017 или более поздней версии.

never

Примеры неправильного кода для этого правила с параметром "never" по умолчанию:

Открыть в Playground
/*eslint comma-dangle: ["error", "never"]*/

var foo = {
    bar: "baz",
    qux: "quux",
};

var arr = [1,2,];

foo({
  bar: "baz",
  qux: "quux",
});

Примеры правильного кода для этого правила с параметром "never" по умолчанию:

Открыть в Playground
/*eslint comma-dangle: ["error", "never"]*/

var foo = {
    bar: "baz",
    qux: "quux"
};

var arr = [1,2];

foo({
  bar: "baz",
  qux: "quux"
});

always

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

Открыть в Playground
/*eslint comma-dangle: ["error", "always"]*/

var foo = {
    bar: "baz",
    qux: "quux"};

var arr = [1,2];

foo({
  bar: "baz",
  qux: "quux"});

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

Открыть в Playground
/*eslint comma-dangle: ["error", "always"]*/

var foo = {
    bar: "baz",
    qux: "quux",
};

var arr = [1,2,];

foo({
  bar: "baz",
  qux: "quux",
});

always-multiline

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

Открыть в Playground
/*eslint comma-dangle: ["error", "always-multiline"]*/

var foo = {
    bar: "baz",
    qux: "quux"};

var foo = { bar: "baz", qux: "quux", };

var arr = [1,2,];

var arr = [1,
    2,];

var arr = [
    1,
    2];

foo({
  bar: "baz",
  qux: "quux"});

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

Открыть в Playground
/*eslint comma-dangle: ["error", "always-multiline"]*/

var foo = {
    bar: "baz",
    qux: "quux",
};

var foo = {bar: "baz", qux: "quux"};
var arr = [1,2];

var arr = [1,
    2];

var arr = [
    1,
    2,
];

foo({
  bar: "baz",
  qux: "quux",
});

только-многострочный

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

Открыть в Playground
/*eslint comma-dangle: ["error", "only-multiline"]*/

var foo = { bar: "baz", qux: "quux", };

var arr = [1,2,];

var arr = [1,
    2,];

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

Открыть в Playground
/*eslint comma-dangle: ["error", "only-multiline"]*/

var foo = {
    bar: "baz",
    qux: "quux",
};

var foo = {
    bar: "baz",
    qux: "quux"
};

var foo = {bar: "baz", qux: "quux"};
var arr = [1,2];

var arr = [1,
    2];

var arr = [
    1,
    2,
];

var arr = [
    1,
    2
];

foo({
  bar: "baz",
  qux: "quux",
});

foo({
  bar: "baz",
  qux: "quux"
});

функции

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

Открыть в Playground
/*eslint comma-dangle: ["error", {"functions": "never"}]*/

function foo(a, b,) {
}

foo(a, b,);
new foo(a, b,);

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

Открыть в Playground
/*eslint comma-dangle: ["error", {"functions": "never"}]*/

function foo(a, b) {
}

foo(a, b);
new foo(a, b);

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

Открыть в Playground
/*eslint comma-dangle: ["error", {"functions": "always"}]*/

function foo(a, b) {
}

foo(a, b);
new foo(a, b);

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

Открыть в Playground
/*eslint comma-dangle: ["error", {"functions": "always"}]*/

function foo(a, b,) {
}

foo(a, b,);
new foo(a, b,);

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

Вы можете отключить это правило, если вас не волнуют висящие запятые.

Версия

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

Ресурсы

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

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

Spec-Zone.ru

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