quote-props
Требовать кавычки вокруг имён свойств литералов объектов
Некоторые проблемы, выявленные этим правилом, автоматически исправляются опцией --fix командной строки
Это правило было устаревшим в ESLint v8.53.0. Пожалуйста, используйте соответствующее правило соответствующее правило в @stylistic/eslint-plugin-js.
Имена свойств литералов объектов могут быть определены двумя способами: с использованием литералов или строк. Например, эти два объекта эквивалентны:
var object1 = {
property: true
};
var object2 = {
"property": true
};
Во многих случаях не имеет значения, использовать ли идентификатор вместо строки или наоборот. Тем не менее, вы можете захотеть обеспечить согласованный стиль в вашем коде.
Однако существуют случаи, когда необходимо использовать кавычки:
- Если вы используете движок ECMAScript 3 JavaScript (например, IE8) и хотите использовать ключевое слово (такое как
if) в качестве имени свойства. Это ограничение было удалено в ECMAScript 5. - Вы хотите использовать символ, не являющийся идентификатором, в имени свойства, например, свойство со пробелом, как в
"one two".
Ещё один пример, где кавычки важны, это использование числовых литералов в качестве ключей свойств:
var object = {
1e2: 1,
100: 2
};
На первый взгляд это может выглядеть нормально, но этот код на самом деле выбросит ошибку синтаксиса в режиме строгости ECMAScript 5. Это происходит потому, что 1e2 и 100 преобразуются в строки перед использованием в качестве имени свойства. Оба String(1e2) и String(100) оказываются равны "100", что вызывает ошибку «Не разрешено дублирование свойств данных в литерале объекта в режиме строгости». Такие проблемы могут быть сложными для отладки, поэтому некоторые предпочитают требовать кавычек вокруг всех имён свойств.
Подробное описание правила
Это правило требует кавычек вокруг имён свойств литералов объектов.
Параметры
Это правило имеет два параметра: строковый и объектный.
Строковый параметр:
-
"always"(по умолчанию) требует кавычек вокруг всех имён свойств литералов объектов -
"as-needed"запрещает использование кавычек вокруг имён свойств литералов объектов, которые не требуются строго -
"consistent"обеспечивает согласованный стиль кавычек; в данном объекте либо все свойства должны быть в кавычках, либо ни одно -
"consistent-as-needed"требует кавычек вокруг всех имён свойств литералов объектов, если какое-либо имя строго требует кавычек, в противном случае запрещает использование кавычек вокруг имён свойств объекта
Объектный параметр:
-
"keywords": trueтребует кавычек вокруг языковых ключевых слов, используемых в качестве имён свойств объекта (применимо только при использованииas-neededилиconsistent-as-needed) -
"unnecessary": true(по умолчанию) запрещает использование кавычек вокруг имён свойств литералов объектов, которые не требуются строго (применимо только при использованииas-needed) -
"unnecessary": falseразрешает использование кавычек вокруг имён свойств литералов объектов, которые не требуются строго (применимо только при использованииas-needed) -
"numbers": trueтребует кавычек вокруг чисел, используемых в качестве имён свойств объекта (применимо только при использованииas-needed)
always
Примеры некорректного кода для этого правила с параметром по умолчанию "always":
/*eslint quote-props: ["error", "always"]*/
var object = {
,
};
Примеры корректного кода для этого правила с параметром по умолчанию "always":
/*eslint quote-props: ["error", "always"]*/
var object1 = {
"foo": "bar",
"baz": 42,
"qux-lorem": true
};
var object2 = {
'foo': 'bar',
'baz': 42,
'qux-lorem': true
};
var object3 = {
foo() {
return;
}
};
as-needed
Примеры некорректного кода для этого правила с параметром "as-needed":
/*eslint quote-props: ["error", "as-needed"]*/
var object = {
,
,
,
};
Примеры корректного кода для этого правила с параметром "as-needed":
/*eslint quote-props: ["error", "as-needed"]*/
var object1 = {
"a-b": 0,
"0x0": 0,
"1e2": 0
};
var object2 = {
foo: 'bar',
baz: 42,
true: 0,
0: 0,
'qux-lorem': true
};
var object3 = {
foo() {
return;
}
};
consistent
Примеры некорректного кода для этого правила с параметром "consistent":
/*eslint quote-props: ["error", "consistent"]*/
var object1 = {
,
"baz": 42,
"qux-lorem": true
};
var object2 = {
'foo': 'bar',
};
Примеры корректного кода для этого правила с параметром "consistent":
/*eslint quote-props: ["error", "consistent"]*/
var object1 = {
"foo": "bar",
"baz": 42,
"qux-lorem": true
};
var object2 = {
'foo': 'bar',
'baz': 42
};
var object3 = {
foo: 'bar',
baz: 42
};
consistent-as-needed
Примеры некорректного кода для этого правила с параметром "consistent-as-needed":
/*eslint quote-props: ["error", "consistent-as-needed"]*/
var object1 = {
,
"baz": 42,
"qux-lorem": true
};
var object2 = {
,
};
Примеры корректного кода для этого правила с параметром "consistent-as-needed":
/*eslint quote-props: ["error", "consistent-as-needed"]*/
var object1 = {
"foo": "bar",
"baz": 42,
"qux-lorem": true
};
var object2 = {
foo: 'bar',
baz: 42
};
ключевые слова
Примеры дополнительного некорректного кода для этого правила с параметрами "as-needed", { "keywords": true }:
/*eslint quote-props: ["error", "as-needed", { "keywords": true }]*/
var x = {
,
};
Примеры дополнительного некорректного кода для этого правила с параметрами "consistent-as-needed", { "keywords": true }:
/*eslint quote-props: ["error", "consistent-as-needed", { "keywords": true }]*/
var x = {
,
};
необходмые
Примеры дополнительного корректного кода для этого правила с параметрами "as-needed", { "unnecessary": false }:
/*eslint quote-props: ["error", "as-needed", { "keywords": true, "unnecessary": false }]*/
var x = {
"while": 1,
"foo": "bar" // Would normally have caused a warning
};
числа
Примеры дополнительного некорректного кода для этого правила с параметрами "as-needed", { "numbers": true }:
/*eslint quote-props: ["error", "as-needed", { "numbers": true }]*/
var x = {
}
Когда не следует его использовать
Если вам всё равно, используются ли имена свойств последовательно в кавычках или нет, и вы не ориентируетесь на устаревшие среды ES3, отключите это правило.
Версия
Это правило было добавлено в ESLint v0.0.6.
Дополнительные материалы
Ресурсы
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/quote-props