[英]Silencing a Problem in Visual Studio Code
在我的項目中,我有一些代碼可以檢查(對於不同的瀏覽器)支持哪種鼠標滾輪,以便我們可以正確添加事件偵聽器。 外觀如下:
const support = 'onwheel' in document.createElement('div')
? 'wheel'
: document.onmousewheel !== undefined
? 'mousewheel'
:'DOMMouseScroll';
有用。 但是,我最近切換到使用Visual Studio Code ,現在存在一個持續存在的問題 :
屬性“ onmousewheel”在“文檔”類型上不存在。
這是一個有效且有用的錯誤。 但是,在這種情況下,我想忽略它,因為這就是我要檢查的內容。
有什么辦法我只能在此行上忽略此問題嗎? 在使用TypeScript時,我嘗試了// tslint:disable-line
,但是我認為這是VS Code本身。 任何幫助表示贊賞。
您正在看到此問題,因為DOM的內置TypeScript類型(由於存儲它們的文件名而通常稱為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
。 但是,應該很少(如果有的話)使用它,並且只能作為最后的手段。 與完全禁用一行的TypeScript相比,更好地正確通知類型系統您所認為的某種方式(就像上面添加了onmousewheel
屬性一樣)。 在一行上禁用TypeScript可以忽略其他有效錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.