簡體   English   中英

沉默Visual Studio代碼中的問題

[英]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;
}

請注意,此文件不能importexport任何內容:它是要聲明一個全局可用的接口Document ,它將為所有現有的全局可用接口Document添加類型。

注意:在這里嘗試tslint:disable不會執行任何操作,因為您遇到的錯誤是在TypeScript中。 TSLint在TypeScript之上提供了額外的檢查層,但是由於此錯誤本身就是TypeScript,因此這不是一個因素。 您可能會想到@ts-ignore 但是,應該很少(如果有的話)使用它,並且只能作為最后的手段。 與完全禁用一行的TypeScript相比,更好地正確通知類型系統您所認為的某種方式(就像上面添加了onmousewheel屬性一樣)。 在一行上禁用TypeScript可以忽略其他有效錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM