Как настроить ESLint для использования, например. event.target и element.parentNode?

Редактировать: я не знал, что сообщения об ошибках исходят даже не от ESLint, а от чего-то под названием [js] в Visual Studio Code. Я бы удалил вопрос, но это может помочь другим, которые также ошибочно принимают вывод [js] за ESLint. Все еще любопытно узнать, что это за процесс [js].

Мне была поставлена ​​задача определить файл .eslintrc.js для всего проекта, чтобы убедиться, что код команды соответствует общепринятым стандартам.

Запуск ESLint с использованием пресета eslint:recommended дает мне следующее сообщение об ошибке

The property "parentNode" does not exist for the type "EventTarget".

Это фрагмент кода, о котором идет речь:

window.addEventListener('keydown', event => {
  const currentTag = event.target.parentNode.tagName;
  /* ... */
})

Я понимаю, что могут быть event.target, которые не HTMLElement, но как я должен кодировать или настраивать ESLint, чтобы эта строка больше не выдавала ошибки ESLint? Мы планируем, что наша сборка не будет работать до тех пор, пока ESLint будет сообщать о каких-либо ошибках, поэтому эту проблему нужно устранить.

Вторая строка кода, вызывающая аналогичную ошибку:

document.activeElement.click();

приводит к ошибке ESLint

The property "click" does not exist for the type "Element".

3-й пример:

const rows = this.childNodes[1].querySelectorAll('tr');

бросает

The property "querySelectorAll" does not exist for the type "Node & ChildNode".

Примечание. Пожалуйста, не предлагайте использовать поток или Typescript, код останется чистым ES6 (для которого, как я понимаю, предназначен ESLint).


person connexo    schedule 14.05.2018    source источник
comment
Просто отключить это глючное правило?   -  person Bergi    schedule 14.05.2018
comment
Придирка: типы потока могут быть аннотированы в комментариях, так что это это чистый JavaScript. Но да, это похоже на странную ошибку линтера.   -  person Jared Smith    schedule 14.05.2018
comment
@Bergi Что это за ошибочное правило? Я использую предустановку eslint:recommended (как и сотни тысяч других).   -  person connexo    schedule 14.05.2018
comment
@connexo В полном сообщении об ошибке всегда должно быть указано, из какого правила оно исходит.   -  person Bergi    schedule 14.05.2018
comment
Похоже, что ESLint пытается обеспечить безопасность типов, что кажется слишком амбициозным для линтера.   -  person    schedule 14.05.2018
comment
Это похоже на TypeScript, а не на eslint, может быть, это ваша IDE неявно пытается ввести намек на ваш код?   -  person Karen Grigoryan    schedule 14.05.2018
comment
@connexo Также я немного сомневаюсь, что сообщение вообще исходит от eslint.   -  person Bergi    schedule 14.05.2018
comment
Пожалуйста, закройте это, так как я не понимал, что сообщения об ошибках исходят даже не от ESLint, а от чего-то, что называется [js] в коде Visual Studio. Я бы удалил его, но это может помочь другим принять вывод [js] за ESLint.   -  person connexo    schedule 14.05.2018
comment
Пожалуйста, проверьте, было ли это? code.visualstudio.com/docs/languages/javascript#_linters   -  person Karen Grigoryan    schedule 14.05.2018
comment
@KarenGrigoryan Пожалуйста, добавьте это вместе с одной или двумя строками текста в качестве ответа, который я могу принять. Рассматриваемый код действительно имеет // @ts-check в качестве первой строки.   -  person connexo    schedule 14.05.2018
comment
@connexo добавил ответ. Спасибо.   -  person Karen Grigoryan    schedule 14.05.2018


Ответы (1)


В соответствии с ОП код содержит // @ts-check в качестве первой строки

Таким образом, совершенно очевидно, что это не имеет никакого отношения к отдельному eslint, а вызвано внутренним VSCode линтер

Самый простой способ включить проверку типов в файле JavaScript — добавить // @ts-check в начало файла.

person Karen Grigoryan    schedule 14.05.2018