Javascript 如何在与NPM方法类似的VS代码中为intellisense使用d.ts文件

Javascript 如何在与NPM方法类似的VS代码中为intellisense使用d.ts文件,javascript,node.js,typescript,visual-studio-code,Javascript,Node.js,Typescript,Visual Studio Code,我有一个nodejs项目(在JS中)。不幸的是,我必须利用很多节点全局变量 一切正常(甚至很多人都建议不要使用globals),除了: 全球人没有智能感知。所以每次我想使用,比方说,全局函数/对象时,我都需要查看它的代码,并找出 参数,它返回什么,等等 假设我有一个全局变量,它是纯对象: foo = { bar: { level2: { level3: { level4: "abc }

我有一个nodejs项目(在JS中)。不幸的是,我必须利用很多节点全局变量

一切正常(甚至很多人都建议不要使用globals),除了:

全球人没有智能感知。所以每次我想使用,比方说,全局函数/对象时,我都需要查看它的代码,并找出 参数,它返回什么,等等

假设我有一个全局变量,它是纯对象:

foo = {
    bar: {
        level2: {
            level3: {
                level4: "abc
            }
        }
    }
}
处理它很烦人,因为我在使用它时看不到对象的结构,而且在编写代码时很容易出错

我发布这个问题的原因是…npm包

有很多用vanilla JS编写的包,其中大多数都使用power d.ts文件。 一旦你安装了这个软件包,你就可以在你的项目中的任何地方使用它,VS代码将为他们提供intellisense。如果您将单击VS代码的工具提示(IDK它如何被称为…类型定义工具提示?) 您将被导航到包的d.ts文件(不是命令的实际实现)

所以我的问题是如何在我的项目中做同样的事情。我不打算把它作为npm发布,我只想在项目中的某个地方有一个d.ts文件,这样我就可以了
每次我需要回忆它的功能时,请使用my global,而不要查看它的实现。

.d.ts
文件中包含任何内容

要访问变量、函数、接口,请在
.ts
文件中添加此行,VS code IntelliSense将建议您

/// <reference path="./test.d.ts" />
如评论部分所述更新

我假设的js文件与您正在尝试的类似

export const testString = 'aditya';
在js文件中,您可以

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

无论是否可能,您所寻找的最糟糕的缺点是,每次更改全局变量/函数时,必须手动更新声明文件

有很多用vanilla JS编写的包,其中大多数都使用power d.ts文件

通常
.d.ts
文件不是手工编写的,而是由
tsc
生成的:您所说的许多包可能是用TypeScript编写的,并作为JavaScript包分发(在JavaScript项目中也使用)和相关的
index.d.ts
文件(在TypeScript项目中使用)

甚至很多人都建议不要使用globals


+1

我已经回答了您的问题,请检查它是否对您有效。@Adityatoke谢谢您,我将尝试一下。您提到的是
.ts
文件,但我的项目是JS格式的。他们提出这个问题的全部要点是,我正试图弄清楚如何与npm包中的许多程序做相同的事情:整个代码库都是vanilla JS,但多亏了一个
d.ts
file VS code可以为您提供类型工具提示(即使它不是类型脚本)@再见,在尝试之前,我想知道你的建议是否适合我的目的。我甚至没有安装
tsconfig
或typescript。我只是想让VS代码知道我的nodejs全局变量。是的,我也用js文件进行了尝试,更新了我对js的回答also@Adityatoke我做了一个与我的案例非常接近的回购演示。我很难理解如何应用你的解决方案@另一位用户,我已经在我们的讨论聊天中添加了您的问题的工作,您可以检查并确认您的解释为我在理解TS之外的类型用法方面提供了坚实的推动力。我很高兴得到这个答案。不过,如果我能够实现我的计划,我将发布一个单独的答案。@另一位用户听到这个消息很高兴
/// <reference path="test.js" />