前端 @types/*** 某个依赖,会包含依赖本身吗?

今天在项目中需要用到 semver 这个库,然后我按照之前的经验,就直接执行 npm i @types/semver 但是在使用的时候,竟然出现了以下错误
image.png

但是我之前开发中,我的 nodeexpress 只安装了 @types 的版本。并且可以正常使用。
image.png

问题: @types只包含包的声明文件?还是也包含包本身呢?(或者说有些包只包含依赖,有些包本身和声明文件都被包含了呢?)

阅读 1.1k
2 个回答

@types/*是不包含本体的。

有的库,本体就已经自带类型声明,不需要额外安装@types/*,比如vue
但有的库,本体和类型声明是分开的,比如react@types/react,需要分开装。

一般来说,只安装@types/*并不会带上本体。你的项目里某些库只安装@types/*也能跑,是因为其他包间接依赖了它,所以也出现在node_modules里了;或者你已经把express安装在了全局,虽然项目里没找到express,但从全局安装位置找到了。

只包含声明,不包含原包。但是开发的时候会让浏览器产生自动补全。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题