排查:npm link包后生命文件报错问题

问题:

npm link @xxx包后,启动项目报错

报错如下:

Try npm install @xxx if it exists or add a new declaration (.d.ts) file containing `declare module


解决办法:

在src目录下,创建文件tye.d.ts 如何贴代码如下

declare module 'xxx'


原理:

@xxx 库没有提供 TypeScript 的类型声明。

当 import 一个没有类型声明的第三方库时,TypeScript 不知道 import 进来的东西是什么类型,只能偷偷地把它指定成 any 类型,这也就是我们常说的隐式 any(implicit any)。所有正常的前端项目都会禁止 implicit any 出现,所以就报错了。

解决方案 1:安装官方的类型声明

解决方案 2:使用 declare module 语法

根据官方文档,只需要在 TypeScript 的 .d.ts 文件中编写一个空的 declare module,就能把环境包当作 any 类型引入,同时又不会触发 implicit any 报错。

这个操作被文档叫做 Shorthand ambient modules,意为「快速引入环境包」:

引入的模块变量确实是 any 类型,而且这样已经不算是隐式 any 了,所以不会报错。

posted @ 2022-11-09 10:06  王猪猴  阅读(492)  评论(0编辑  收藏  举报