我安装了一个随其类型一起提供的npm模块(react-native-mobx
)。这是node_modules目录中的文件:
注意包含类型的突出显示的mobx.d.ts
文件。我安装了typescript 2.2.2。就像我现在一样,类型现在包含在node_modules内的@types
文件夹中。在这种情况下,如何在我的代码中引用此库并具有正常的智能?我应该在react-native-mobx
中创建一个文件夹“@types
”并复制那里的mobx.d.ts并将其名称更改为index.d.ts吗?
感谢您的帮助。
答案 0 :(得分:0)
这应该只适合你。您使用的是什么版本的mobx
?
在mobx@3.1.5
node_modules/mobx/package.json
指定"typings": "lib/mobx.d.ts"
,TypeScript tsc
编译器将检查该package.json
以查找输入。
如果typings
未指定types
或index.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文件夹中的文件。