Правила Eslint @typescript-eslint/naming-convention конфликтуют с @typescript-eslint/no-unused-vars

Я настраиваю 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" и я не хотел его удалять.

Как сделать так, чтобы одно правило не мешало другому? или какой-то способ использовать два правила

На самом деле не помогает вашему вопросу, просто работает с ним, но пропуск деструктурированного значения массива также может быть выполнен с пустым элементом: const [, b] = ['a', 'b'];

M. Desjardins 14.02.2023 18:05
Принципы SOLID в JavaScript с примерами
Принципы SOLID в JavaScript с примерами
Принцип единой ответственности подразумевает то, что:
Типы привязки данных в Angular
Типы привязки данных в Angular
Привязка данных автоматически поддерживает страницу в актуальном состоянии на основе состояния вашего приложения. Вы используете привязку данных,...
3 паттерна TypeScript, которые я использую в своей повседневной работе
3 паттерна TypeScript, которые я использую в своей повседневной работе
В TypeScript 2.0 в язык был добавлен модификатор readonly.
Мифический Angular - Миф Angular: стили компонентов
Мифический Angular - Миф Angular: стили компонентов
Это очень короткая и интересная для меня тема. В Angular каждый компонент может иметь свои собственные прикрепленные стили. Стили могут находиться в...
Подсказка RxJS [filter, skipWhile]
Подсказка RxJS [filter, skipWhile]
Эта подсказка описывает разницу между операторами filter и skipWhile из библиотеки RxJS .
Шаблоны Angular PrimeNg
Шаблоны Angular PrimeNg
Как привнести проверку типов в наши шаблоны Angular, использующие компоненты библиотеки PrimeNg, и настроить их отображение с помощью встроенной...
1
1
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

@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, который я настраиваю, я пришел к выводу, что, должно быть, злоупотребил расширениями. Я хотел поблагодарить вас .. большое спасибо

Pand 15.02.2023 23:23

Другие вопросы по теме