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", используемым по умолчанию:
/*eslint comma-dangle: ["error", "never"]*/
var foo = {
bar: "baz",
qux: "quux"
};
var arr = [1,2];
foo({
bar: "baz",
qux: "quux"
});
Примеры правильного кода для этого правила с параметром "never", используемым по умолчанию:
/*eslint comma-dangle: ["error", "never"]*/
var foo = {
bar: "baz",
qux: "quux"
};
var arr = [1,2];
foo({
bar: "baz",
qux: "quux"
});
always
Примеры неправильного кода для этого правила с параметром "always":
/*eslint comma-dangle: ["error", "always"]*/
var foo = {
bar: "baz",
qux: "quux"};
var arr = [1,2;
foo({
bar: "baz",
qux: "quux"};
Примеры правильного кода для этого правила с параметром "always":
/*eslint comma-dangle: ["error", "always"]*/
var foo = {
bar: "baz",
qux: "quux",
};
var arr = [1,2,];
foo({
bar: "baz",
qux: "quux",
},);
always-multiline
Примеры неправильного кода для этого правила с параметром "always-multiline":
/*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":
/*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":
/*eslint comma-dangle: ["error", "only-multiline"]*/
var foo = { bar: "baz", qux: "quux" };
var arr = [1,2];
var arr = [1,
2];
Примеры правильного кода для этого правила с параметром "only-multiline":
/*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"}:
/*eslint comma-dangle: ["error", {"functions": "never"}]*/
function foo(a, b) {
}
foo(a, b);
new foo(a, b);
Примеры правильного кода для этого правила с параметром {"functions": "never"}:
/*eslint comma-dangle: ["error", {"functions": "never"}]*/
function foo(a, b) {
}
foo(a, b);
new foo(a, b);
Примеры неправильного кода для этого правила с параметром {"functions": "always"}:
/*eslint comma-dangle: ["error", {"functions": "always"}]*/
function foo(a, b {
}
foo(a, b;
new foo(a, b;
Примеры правильного кода для этого правила с параметром {"functions": "always"}:
/*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