无法找到模块“xxxx”的声明文件, 隐式拥有 "any" 类型, 添加一个包含 `declare module 'xxxx';` 的新声明(.d.ts)

8,289 阅读2分钟

前提摘要,有一个npm包,但包并没有写@types/xxx,导致引入包文件时,显示一个小问题,虽然不影响正常的使用(确实不影响),但还是要解决

123.jpg

000.jpg

  • 就是那个小三点...,看着碍眼,但是引入的 <Preview>组件不影响使用

typings 声明管理器,了解不多,已经不推荐使用。(有人使用无效)

  • 我也不知道是什么,不推荐无效就不用了

解决方法

  • Try npm install @types/xxxx 不行,因为当前那个包并没有types
  • 直接在项目project的根目录,新建一个 .d.ts 文件, declare module 'xxxxx'对模块进行声明,...没了,问题解决,反正我是解决了这样

0000.jpg

  • 但是网上有的人说,直接在src文件目录下创建一个 shime-vue.d.ts文件(vue我的是react),在里面写入 declare module 'xxxxx', 这招我不行

  • (我用的是UMI框架!!)新建文件夹src/@types/,在 src 目录新建@types目录,在其中编写.d.ts声明文件,声明文件会自动被识别,可以在此为一些没有声明文件的模块编写自己的声明文件这招我也不行,Fxxx~!, 可能是UMI的原因

  • 但是我没用UMI框架的话,在 src 目录新建types目录,在其中编写.d.ts声明文件,声明文件会自动被识别,...没了,问题解决 1331.jpg

  • 作为 npm 模块发布时,声明文件可捆绑发布,需在package.json中指明"types": "./types/index.d.ts" 我懒得试了,想躺平了,但我今天还是想适用一下…………

  • 在 package.json 里添加 "types": "index.d.ts" 就可以让别人使用你的库的时候能得到类型提示。但是其实这里也可以直接填入源码文件,也就是 "types": "index.ts",我TM直接在 .d.ts里 复制进去 index.js 代码,也可行 444.jpg

443.jpg

参考链接:daief.tech/post/declar…

参考链接:cloud.tencent.com/developer/a…

参考链接:zhuanlan.zhihu.com/p/356231418 (牛逼啊!)

结语

前端react QQ群:788023830 ---- React/Redux - 地下老英雄

前端交流QQ群:249620372 ---- FRONT-END-JS前端

(我们的宗旨是,为了加班,为了秃顶……,仰望大佬),希望小伙伴们加群一起学习