#javascript #typescript #eslint #destructuring #unused-variables
Вопрос:
Рассмотрим следующий код, в котором я создаю «копию» x
с удаленным одним из свойств, используя деструктурирование:
const x = { a: 1, b: 2, c: 3};
const { a, ...x2} = x;
console.log(x);
console.log(x2);
Если я сделаю это так, @typescript-eslint/no-unused-vars
буду считать это ошибкой, которая a
не используется.
Как я могу изменить код, чтобы исправить ошибку, явно не прося eslint игнорировать оскорбительную строку , предпочтительно по-прежнему используя синтаксис деструкции? Т. Е. Я действительно не хочу использовать delete
, и я не хочу явно перечислять все другие свойства, такие как const x2 = {b: x.b, c: x.c }
.
Есть ли причудливый синтаксис или странное правило eslint, чтобы взять мой торт и съесть его тоже?
Комментарии:
1. Почему бы просто не добавить шаблон игнорирования в конфигурацию правил и не использовать его?
Ответ №1:
Существует недавно добавленная опция, названная ignoreRestSiblings
для этого правила.
Вы можете установить значение true, чтобы игнорировать ваше дело:
{ "ignoreRestSiblings": true }
Ответ №2:
Я обычно удаляю некоторые реквизиты с помощью этого утилиты:
const removeProperty = <Obj, Prop extends keyof Obj>(obj: Obj, prop: Prop) => {
const { [prop]: _, ...rest } = obj;
return rest
}
Пожалуйста, проверьте, подходит ли это для вашего случая.
Хитрость в том, что вы используете подчеркивание _
для неиспользуемых переменных.
Вы можете явно разрешить использование _
правил in eslint.
Комментарии:
1. линтинг должен помочь сохранить код красивым, а не заставлять вас вводить особенности, чтобы танцевать вокруг плохо написанных правил.
ignoreRestSiblings
это гораздо лучший подход, потому что удаление свойств с помощью деструктурирования является кратким.2. @Wyck, конечно, ты прав