vscode:如何从node_module库引用类型

时间:2017-04-20 13:20:40

标签: typescript react-native intellisense node-modules

我安装了一个随其类型一起提供的npm模块(react-native-mobx)。这是node_modules目录中的文件:

enter image description here

注意包含类型的突出显示的mobx.d.ts文件。我安装了typescript 2.2.2。就像我现在一样,类型现在包含在node_modules内的@types文件夹中。在这种情况下,如何在我的代码中引用此库并具有正常的智能?我应该在react-native-mobx中创建一个文件夹“@types”并复制那里的mobx.d.ts并将其名称更改为index.d.ts吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这应该只适合你。您使用的是什么版本的mobx

mobx@3.1.5 node_modules/mobx/package.json指定"typings": "lib/mobx.d.ts",TypeScript tsc编译器将检查该package.json以查找输入。

如果typings未指定typesindex.d.ts值,则默认会查找mobx,有关更多具体信息,请参阅文档他们如何解决:https://www.typescriptlang.org/docs/handbook/declaration-files/publishing.html

也许您使用的package.json旧版本没有指定typings的{​​{1}}

答案 1 :(得分:0)

@Alex,谢谢你的回答。是的,package.json指定typings": "lib/mobx.d.ts。问题是:此文件定义不位于库的根目录,而是位于子目录中。这是项目node_modules文件夹中的文件夹结构:

 /react-native-mobx
    -index.js
    -package.json
    -readme.md
    ...
    /node_modules
         /mobx
            -package.json <-- "typings: lib/mobx.d.ts"
            /lib
               - mob.d.ts

当我运行tsc --traceResolution时,我可以看到打字稿确实解析了这个内部文件夹。但它报告说package.json不包含打字,非常奇怪......

<强>更新 作为解决方法,我将 mobx.d.ts 从其内部文件夹复制到根文件夹中,并将其名称更改为index.d.ts。现在打字稿会选择类型。但这是一个非常丑陋的解决方法,因为我搞乱了node_modules文件夹中的文件。