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

时间:2017-03-27 22:15:47

标签: javascript node.js visual-studio-code typescript-typings

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

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

.d.ts中,我将导出列为;

interface MyI {
    Initiate() : void;
}

module 'modulename' {
    export var i : MyI;
}

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

var i = require("modulename");

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

var i = require("./index.js");

index.js反过来看起来像;

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

module.exports.i = i;

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

1 个答案:

答案 0 :(得分:2)

要创建vscode intellisense的输入以适用于“本地”情况(功能test.js)和“全局”情况(作为node_module),请在main / entry {{之后命名该文件1}}做的伎俩。在这种情况下,.js文件为"main",因此输入内容为index.js

这看起来很自然,但我无法找到指定此内容的vscode intellisense的文档。

我之前在package / node_module名称index.d.ts之后命名了输入法,并将packagename.d.js(来自"main")保留为package.jsonindex.js中的“typings”值也应与package.json文件名匹配。

我认为“index.js”或“main.js”的一个简洁的替代方法是命名主入口点,以及包名后的相应类型。