[英]How do I add global types to eslint/emmet in vscode?
注意:這不是typescript 問題。 我使用的是 JavaScript,而不是 TypeScript
VSCode 中的 ESLint/Emmet 可以識別某些全局類型。 例如:我輸入
const ctx = AudioC
vscode/eslint/emmet 自動將其完成為AudioContext
。
如果我繼續輸入
const ctx = new AudioContext();
ctx.create
它清楚地知道類型,因為它提供了該類型的完成,而不僅僅是它是一個全局的
如何添加新的全局完成/類型數據? 比如這些類型
https://www.npmjs.com/package/@webgpu/types
即使我必須將它們轉換成其他形式
因為 VSCode/ESlint/Emmet 並不知道它們。
注意:我不是在問/* global someName */
也不是在問“specifying globals” 。 這些都沒有添加新類型。
另請注意,我問的是如何在全球范圍內添加它們。 換句話說,如果只是創建一個新文件並鍵入
const a = GPUBufferUsage.
它需要完成,就像我輸入的一樣
const b = navigator.
我不必在文件中添加任何特殊的評論或注釋。 這些類型是在全球范圍內添加的。
您鏈接的 @webgpu/types NPM 包具有此特定於 TypeScript 的描述:
這個包為即將到來的 WebGPU 標准定義了 Typescript 類型 (
.d.ts
)。
盡管您通常可以在 JavaScript 和 TypeScript 中使用JSDoc 類型作為在 JS IDE 中輸入的解決方案,但正如您之前在此處的回答中所述,TypeScript 是一種不同的語言,如果不使用 TypeScript,您將無法使用該包。
一半的解決方案:
即使在 JavaScript 中,VSCode 也使用打字稿來完成其類型完成
要添加全局類型,您可以添加一個jsconfig.json
文件。 jsconfig.json
文件與tsconfig.json
文件具有相同的格式,除了它默認為allowJs: true
。 否則它是相同的,因此您可以對其進行相同的配置。 對於上面引用的包,這樣的事情似乎有效
jsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"module": "esnext",
"typeRoots": [
"./node_modules/@webgpu/types"
]
},
"exclude": ["node_modules", "**/node_modules/*"]
}
並為上面的包添加類型
npm install --save-dev @webgpu/types
請參閱 VSCode 文檔: https ://code.visualstudio.com/docs/nodejs/working-with-javascript
這對 eslint 沒有幫助。 它仍然抱怨。 但是您可以手動將它們添加到您的.eslintrc
文件中。 對於這個特定的文件,我用
grep "declare var" ./node_modules/@webgpu/types/dist/index.d.ts | sed 's/declare var \(.*\):.*$/"\1",/'
如果有更標准的方法讓 eslint 識別這些全局變量,請添加答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.