繁体   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