Отключение проблемы в коде Visual Studio - PullRequest
0 голосов
/ 04 декабря 2018

В моем проекте есть некоторый код, который проверяет, какое колесо мыши поддерживается (для разных браузеров), чтобы мы могли правильно добавить прослушиватель событий.Вот как это выглядит:

const support = 'onwheel' in document.createElement('div') 
? 'wheel'
: document.onmousewheel !== undefined 
    ? 'mousewheel'
    :'DOMMouseScroll';

Работает.Однако недавно я переключился на использование кода Visual Studio , и теперь существует постоянная Проблема :

Свойство 'onmousewheel' не существует для типа«Документ».

Это допустимая и полезная ошибка.Однако в этом случае я хочу игнорировать это, поскольку это то, что я проверяю.

enter image description here

Можно ли как-то игнорировать эту проблему только в этой строке?Поскольку я использую TypeScript, я пробовал // tslint:disable-line, но я думаю, что это сам код VS.Любая помощь приветствуется.

enter image description here

1 Ответ

0 голосов
/ 04 декабря 2018

Вы видите эту проблему, потому что встроенные типы TypeScript для DOM (часто называемые lib.dom.d.ts из-за имени файла, в котором они хранятся) не объявляют, что свойство onmousewheel существует втип Document.Глобальная переменная document объявлена ​​имеющей тип Document.Тем не менее, он, очевидно, существует на window.Можете ли вы переключить код на window.onmousewheel?

Если вы уверены, что должен иметь document.onmousewheel, вы можете создать новый файл (назовем его typings/lib.custom.d.ts) и объявитьчто интерфейс Document также имеет свойство onmousewheel:

interface Document {
    onmousewheel: ((this: Document, ev: Event) => any) | null;
}

Обратите внимание, что этот файл не может ничего import или export: он предназначен для объявления глобально доступного интерфейса Document, который добавит типы к любому ранее существующему глобально доступному интерфейсу Document.

Примечание: попытка tslint:disable ничего не делает здесь, потому что ошибки, которые вы получаете,в TypeScript.TSLint предоставляет дополнительный уровень проверки поверх TypeScript, но поскольку эта ошибка сама по себе является TypeScript, она не является фактором.Возможно, вы думаете о @ts-ignore.Однако это следует использовать редко (если вообще когда-либо) и только в крайнем случае.Гораздо лучше правильно проинформировать систему типов о том, что вы так думаете, (как выше с добавленным свойством интерфейса onmousewheel), чем полностью отключить TypeScript для строки.Отключение TypeScript в строке может игнорировать другие допустимые ошибки.

...