簡體   English   中英

如何在 VS 代碼中使用 d.ts 文件進行智能感知,類似於 NPM 方法

[英]How to use d.ts file for intellisense in VS Code similar to NPM approach

我有一個 nodejs 項目(在 JS 中)。 不幸的是,我不得不使用很多節點全局變量。

一切正常(甚至很多人都建議不要使用全局變量),除了:

全局變量沒有智能感知。 所以每次我想使用全局函數/對象時,我都需要查看它的代碼並弄清楚參數是什么,它返回什么等等。

假設我有一個純 object 的全局變量:

foo = {
    bar: {
        level2: {
            level3: {
                level4: "abc
            }
        }
    }
}

處理起來很煩人,因為我在使用時無法“看到” object 的結構,並且在編寫代碼時很容易出錯。

我發布這個問題的原因是...npm 包

有很多用 vanilla JS 編寫的包,其中大多數都使用了強大的 d.ts 文件。 安裝 package 后,您可以在項目中的任何位置使用它,並且 VS 代碼將為它們提供智能感知。 如果您單擊 VS 代碼的工具提示(IDK 如何調用...類型定義工具提示?),您將被導航到 package 的 d.ts 文件(不是命令的實際實現)。

所以我的問題是如何在我的項目中做同樣的事情。 我不打算將它發布為 npm 我只想要項目中某處的 d.ts 文件,這樣我就可以使用我的全局而無需在每次需要回憶它的作用時查看它的實現。

讓你的.d.ts文件里面是任何東西

要訪問變量、函數、接口,請在您的.ts文件中添加這一行,VS code IntelliSense 會建議您

/// <reference path="./test.d.ts" />

如果您想在整個項目中使用此test.d.ts ,而不僅僅是在任何特定文件上。 然后在tsconfig.json中加入這一行

"files" : [ "./src/test.d.ts" ]

如評論部分所述更新

我假設的我的 js 文件類似於你正在嘗試做的事情

export const testString = 'aditya';

在你的 js 文件中

/// <reference path="test.js" />

無論是否可能,您正在尋找的最糟糕的缺點是每次更改全局變量/函數時必須手動更新聲明文件。

有很多用 vanilla JS 編寫的包,其中大多數都使用了強大的 d.ts 文件。

通常.d.ts文件不是手工編寫的,而是由tsc生成的:您所說的許多包可能是用 TypeScript 編寫的,並作為 JavaScript 包分發(用於index.d.ts相關項目) index.d.ts文件(用於 TypeScript 項目)

甚至很多人都建議不要使用全局變量

+1

暫無
暫無

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

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