Я настраиваю eslint для проекта typescript.
Это правило для неиспользуемых переменных в случае деструктуризации
"@typescript-eslint/no-unused-vars": [
"error",
{
"argsIgnorePattern": "^_",
"ignoreRestSiblings": true,
"destructuredArrayIgnorePattern": "^_"
}
],
//ex:
// error lint
const [a, b] = ['a', 'b']
console.info(b)
// ok
const [_a, b] = ['a', 'b']
console.info(b)
Но правило @typescript-eslint/naming-convention вызывает ошибку. Я не указал это в правилах, но я думаю, что это добавлено плагином:"@typescript-eslint" и я не хотел его удалять.
Как сделать так, чтобы одно правило не мешало другому? или какой-то способ использовать два правила
@typescript-eslint/naming-convention обычно не включен по умолчанию ни в одной из конфигураций, которые typescript-eslint поставляются. Если он установлен в вашей конфигурации, вы должны расширить какую-то другую конфигурацию, которая включает его.
Для вашего конкретного примера вы можете пропустить определенные элементы в шаблоне деструктурирования массива, просто поставив запятую там, где должен быть элемент. См. следующий пример из Назначение деструктуризации:
function f() {
return [1, 2, 3];
}
const [a, , b] = f();
console.info(a); // 1
console.info(b); // 3
const [c] = f();
console.info(c); // 1
Или в вашем случае:
const [, b] = ['a', 'b']
Однако в более общем случае, если вы хотите поставить перед неиспользуемой переменной знак подчеркивания, для этого есть опция в правиле @typescript-eslint/naming-convention. Например:
"@typescript-eslint/naming-convention": [
"error",
{
"selector": "parameter",
"modifiers": ["unused"],
"format": ["strictCamelCase"],
"leadingUnderscore": "require"
},
]
Отрегулируйте под свои нужды. Вы можете сделать это для других типов, кроме переменных, или вам не нужно использовать «строгий» верблюжий регистр (то же, что и верблюжий регистр, но последовательные заглавные буквы не разрешены [т.е. myId действителен, но myID нет]), или вы может сделать подчеркивание разрешенным, но не обязательно обязательным.
Прикольно, я думаю правило тогда пришло от airbnb-typescript. поскольку это мой первый файл eslint, который я настраиваю, я пришел к выводу, что, должно быть, злоупотребил расширениями. Я хотел поблагодарить вас .. большое спасибо
На самом деле не помогает вашему вопросу, просто работает с ним, но пропуск деструктурированного значения массива также может быть выполнен с пустым элементом: const [, b] = ['a', 'b'];