在我的项目中,我有一些代码可以检查(对于不同的浏览器)支持哪种鼠标滚轮,以便我们可以正确添加事件侦听器。这是它的外观:
const support = 'onwheel' in document.createElement('div')
? 'wheel'
: document.onmousewheel !== undefined
? 'mousewheel'
:'DOMMouseScroll';
有效。但是,我最近切换到使用Visual Studio Code,现在存在一个常量问题:
“文档”类型上不存在属性“ onmousewheel”。
这是有效且有用的错误。但是,在这种情况下,我想忽略它,因为这就是我要检查的内容。
有什么办法可以仅在此行上忽略此问题吗?在使用TypeScript时,我尝试了// tslint:disable-line
,但我认为这是VS Code本身。任何帮助表示赞赏。
答案 0 :(得分:1)
您正在看到此问题,因为DOM的内置TypeScript类型(由于存储它们的文件名,通常称为lib.dom.d.ts
)没有声明{{1} }属性存在于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
。
注意:尝试tslint:disable
在这里什么也不做,因为您遇到的错误是TypeScript。 TSLint在TypeScript之上提供了额外的检查层,但是由于此错误本身就是TypeScript,因此这不是一个因素。您可能会想到@ts-ignore
。但是,应该很少(如果有的话)使用它,并且只能作为最后的手段。与完全禁用一行的TypeScript相比,正确告知类型系统某种方式(如上面带有添加的Document
接口属性的方式)要好得多。在一行上禁用TypeScript可以忽略其他有效错误。