Spec-Zone.ru › ESLint

comma-dangle

Требовать или запрещать завершающие запятые

🔧 Можно исправить автоматически

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

Важно

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

Подробнее

Завершающие запятые в литералах объектов допустимы согласно спецификации 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 (например, import {a,} from "foo";)
  • exports применяется к объявлениям экспорта модулей ES (например, export {a,};)
  • functions применяется к объявлениям функций и вызовам функций (например, (function(a,){ })(b,);)
    • functions следует включать только при проверке кода ECMAScript 2017 или новее.

never

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

Open in 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

Примеры неправильного кода для этого правила с параметром "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

Примеры неправильного кода для этого правила с параметром {"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