如何在node.js项目中本地使用.d.ts类型的vscode intellisense?

Nia*_*all 6 javascript node.js visual-studio-code typescript-typings

我正在设置一个使用本机加载项的node.js项目.本机加载项包括大量导出的函数.我设置了一个typings文件(.d.ts),其中包含从本机加载项导出的所有函数定义和数据等.当我用npm包装所有这些并将其安装到客户端项目中时,vscode intellisense会获取所有类型,一切都很好.

当我尝试test.js在与原生插件相同的项目中使用a 的类型时,不会选择输入,特别是导出的变量; 我怀疑它与它们的导出方式.d.ts或模块的命名有关.d.ts.

.d.ts,我把出口列为;

interface MyI {
    Initiate() : void;
}

module 'modulename' {
    export var i : MyI;
}
Run Code Online (Sandbox Code Playgroud)

require在客户端的模块为(.js文件);

var i = require("modulename");
Run Code Online (Sandbox Code Playgroud)

在测试代​​码中,我要求它(因为我通过index.js文件存根);

var i = require("./index.js");
Run Code Online (Sandbox Code Playgroud)

index.js反过来样子;

var i = require("./lib/nativeaddon");

module.exports.i = i;
Run Code Online (Sandbox Code Playgroud)

当我使用附加组件(通过index.js)时,如何让vscode在本地使用intellisense 的输入test.js

Nia*_*all 2

要为 vscode intellisense 创建适用于“本地”情况(使用test.js)和“全局”情况(作为 node_module)的类型,在 main/entry 之后命名文件就.js可以了。在这种情况下,"main"文件是index.js,所以打字变成了index.d.ts

这看起来确实很自然,但我无法找到指定这一点的 vscode intellisense 文档。

我之前已将类型命名为 package/node_module 名称packagename.d.js) 并将"main"(from package.json) 保留为index.js。中的“typings”值package.json也应该与.d.ts文件名匹配。

我认为“index.js”或“main.js”的一个巧妙替代方案是在包名称之后命名主入口点和相应的类型。

  • 您好,抱歉,忘了更新您的信息:根据 https://github.com/Microsoft/TypeScript/issues/14342,这(使用项目内类型在 VSCode 中进行类型检查)实际上是不可能的。 (4认同)