簡體   English   中英

如何在 vscode 中將全局類型添加到 eslint/emmet?

[英]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.

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