пробелы-в-скобках
Обеспечивает согласованное распределение пробелов внутри фигурных скобок литералов объектов и квадратных скобок литералов массивов.
Хотя предпочтения форматирования очень индивидуальны, ряд руководств по стилю требуют или запрещают пробелы между скобками:
var obj = { foo: 'bar' };
var arr = [ 'foo', 'bar' ];
foo[ 'bar' ];
var obj = {foo: 'bar'};
var arr = ['foo', 'bar'];
foo['bar'];
Подробное описание правила
Это правило направлено на поддержание согласованности пробелов внутри квадратных скобок, либо запрещая пробелы внутри скобок между скобками и другими токенами, либо навязывая пробелы. Скобки, отделенные от смежного значения новой строкой, исключаются из этого правила, так как это распространённый шаблон. Литералы объектов, используемые в качестве первого или последнего элемента массива, также игнорируются.
Параметры
Для этого правила доступны два параметра:
-
"always"требует пробел внутри литералов объектов и массивов -
"never"требует отсутствие пробелов внутри литералов объектов и массивов (по умолчанию)
В зависимости от ваших соглашений об оформлении кода, вы можете выбрать любой из параметров, указав его в вашей конфигурации:
"space-in-brackets": ["error", "always"]
“никогда”
Примеры некорректного кода для этого правила с параметром "never" по умолчанию:
foo[ 'bar' ];
foo['bar' ];
var arr = [ 'foo', 'bar' ];
var arr = ['foo', 'bar' ];
var arr = [ ['foo'], 'bar'];
var arr = [[ 'foo' ], 'bar'];
var arr = ['foo',
'bar'
];
var obj = { 'foo': 'bar' };
var obj = {'foo': 'bar' };
var obj = { baz: {'foo': 'qux'}, bar};
var obj = {baz: { 'foo': 'qux' }, bar};
Примеры корректного кода для этого правила с параметром "never" по умолчанию:
// When options are ["error", "never"]
foo['bar'];
foo[
'bar'
];
foo[
'bar'];
var arr = [];
var arr = ['foo', 'bar', 'baz'];
var arr = [['foo'], 'bar', 'baz'];
var arr = [
'foo',
'bar',
'baz'
];
var arr = [
'foo',
'bar'];
var obj = {'foo': 'bar'};
var obj = {'foo': {'bar': 'baz'}, 'qux': 'quxx'};
var obj = {
'foo': 'bar'
};
var obj = {'foo': 'bar'
};
var obj = {
'foo':'bar'};
var obj = {};
“всегда”
Примеры некорректного кода для этого правила с параметром "always":
foo['bar'];
foo['bar' ];
foo[ 'bar'];
var arr = ['foo', 'bar'];
var arr = ['foo', 'bar' ];
var arr = [ ['foo'], 'bar' ];
var arr = ['foo',
'bar'
];
var arr = [
'foo',
'bar'];
var obj = {'foo': 'bar'};
var obj = {'foo': 'bar' };
var obj = { baz: {'foo': 'qux'}, bar};
var obj = {baz: { 'foo': 'qux' }, bar};
var obj = {'foo': 'bar'
};
var obj = {
'foo':'bar'};
Примеры корректного кода для этого правила с параметром "always":
foo[ 'bar' ];
foo[
'bar'
];
var arr = [];
var arr = [ 'foo', 'bar', 'baz' ];
var arr = [ [ 'foo' ], 'bar', 'baz' ];
var arr = [
'foo',
'bar',
'baz'
];
var obj = {};
var obj = { 'foo': 'bar' };
var obj = { 'foo': { 'bar': 'baz' }, 'qux': 'quxx' };
var obj = {
'foo': 'bar'
};
Обратите внимание, что "always" имеет специальный случай, когда {} и [] не считаются проблемами.
Исключения
Литерал объекта может использоваться в качестве третьего элемента массива для указания исключений по пробелам. Эти исключения работают в контексте первого параметра. То есть, если "always" установлен для навязывания пробелов, а исключение установлено на false, это запретит пробелы для совпадающих случаев. Аналогично, если "never" установлен для запрета пробелов, а исключение установлено на true, это будет навязывать пробелы для совпадающих случаев.
Вы можете добавить исключения следующим образом:
В случае с "always" параметром, установите исключение на false, чтобы его активировать:
"space-in-brackets": ["error", "always", {
"singleValue": false,
"objectsInArrays": false,
"arraysInArrays": false,
"arraysInObjects": false,
"objectsInObjects": false,
"propertyName": false
}]
В случае с "never" параметром, установите исключение на true, чтобы его активировать:
"space-in-brackets": ["error", "never", {
"singleValue": true,
"objectsInArrays": true,
"arraysInArrays": true,
"arraysInObjects": true,
"objectsInObjects": true,
"propertyName": true
}]
Доступны следующие исключения:
-
singleValueустанавливает пробелы для единственного значения внутри квадратных скобок массива. -
objectsInArraysустанавливает пробелы между фигурными скобками и квадратными скобками литералов объектов, являющихся первым или последним элементом в массиве. -
arraysInArraysустанавливает пробелы между квадратными скобками литералов массивов, являющихся первым или последним элементом в массиве. -
arraysInObjectsустанавливает пробелы между квадратной скобкой и фигурной скобкой литерала массива, являющегося последним элементом в объекте. -
objectsInObjectsустанавливает пробелы между фигурной скобкой литерала объекта, являющегося последним элементом в объекте, и фигурной скобкой содержащего объекта. -
propertyNameустанавливает пробелы в квадратных скобках вычисляемых членов выражений.
В каждом из следующих примеров предполагается "always" параметр.
Примеры некорректного кода для этого правила, когда "singleValue" установлен на false:
var foo = [ 'foo' ];
var foo = [ 'foo'];
var foo = ['foo' ];
var foo = [ 1 ];
var foo = [ 1];
var foo = [1 ];
var foo = [ [ 1, 2 ] ];
var foo = [ { 'foo': 'bar' } ];
Примеры корректного кода для этого правила, когда "singleValue" установлен на false:
var foo = ['foo'];
var foo = [1];
var foo = [[ 1, 1 ]];
var foo = [{ 'foo': 'bar' }];
Примеры некорректного кода, когда "objectsInArrays" установлен на false:
var arr = [ { 'foo': 'bar' } ];
var arr = [ {
'foo': 'bar'
} ]
Примеры корректного кода, когда "objectsInArrays" установлен на false:
var arr = [{ 'foo': 'bar' }];
var arr = [{
'foo': 'bar'
}];
Примеры некорректного кода, когда "arraysInArrays" установлен на false:
var arr = [ [ 1, 2 ], 2, 3, 4 ];
var arr = [ [ 1, 2 ], 2, [ 3, 4 ] ];
Примеры корректного кода, когда "arraysInArrays" установлен на false:
var arr = [[ 1, 2 ], 2, 3, 4 ];
var arr = [[ 1, 2 ], 2, [ 3, 4 ]];
Примеры некорректного кода, когда "arraysInObjects" установлен на false:
var obj = { "foo": [ 1, 2 ] };
var obj = { "foo": [ "baz", "bar" ] };
Примеры корректного кода, когда "arraysInObjects" установлен на false:
var obj = { "foo": [ 1, 2 ]};
var obj = { "foo": [ "baz", "bar" ]};
Примеры некорректного кода, когда "objectsInObjects" установлен на false:
var obj = { "foo": { "baz": 1, "bar": 2 } };
var obj = { "foo": [ "baz", "bar" ], "qux": { "baz": 1, "bar": 2 } };
Примеры корректного кода, когда "objectsInObjects" установлен на false:
var obj = { "foo": { "baz": 1, "bar": 2 }};
var obj = { "foo": [ "baz", "bar" ], "qux": { "baz": 1, "bar": 2 }};
Примеры некорректного кода, когда "propertyName" установлен на false:
var foo = obj[ 1 ];
var foo = obj[ bar ];
Примеры корректного кода, когда "propertyName" установлен на false:
var foo = obj[bar];
var foo = obj[0, 1];
Когда не следует использовать это правило
Вы можете отключить это правило, если вас не беспокоит согласованность пробелов между скобками.
Связанные правила
Версия
Это правило было добавлено в ESLint v0.4.1 и удалено в v1.0.0-rc-1.
© OpenJS Foundation and other contributors
Licensed under the MIT License.
https://eslint.org/docs/latest/rules/space-in-brackets