quote-props
Требовать заключать имена свойств литералов объектов в кавычки
Некоторые проблемы, о которых сообщает это правило, можно автоматически исправить с помощью параметра --fix командной строки
Это правило было устаревшим объявлено в ESLint v8.53.0. Оно будет удалено в v11.0.0. Используйте соответствующее правило из @stylistic/eslint-plugin.
Имена свойств литералов объектов можно задавать двумя способами: с помощью идентификаторов или строк. Например, эти два объекта эквивалентны:
var object1 = {
property: true
};
var object2 = {
"property": true
};
Во многих случаях не имеет значения, выберете ли вы идентификатор вместо строки или наоборот. Тем не менее вы можете захотеть обеспечить единообразие стиля в коде.
Однако в некоторых случаях кавычки обязательны:
- Если вы используете JavaScript-движок ECMAScript 3 (например, 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
};
keywords
Примеры дополнительного неправильного кода для этого правила со значениями параметров "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 = {
,
};
unnecessary
Примеры дополнительного правильного кода для этого правила со значениями параметров "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
};
numbers
Примеры дополнительного неправильного кода для этого правила со значениями параметров "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