TypeScript 5.5 新特性 isolatedDeclarations 踩坑实录:从报错到解决的完整过程

229 阅读2分钟

在最近探索如何加速项目中 d.ts 文件生成的过程中,偶然发现 TypeScript 从 5.5 版本开始新增了一个非常有用的配置项:isolatedDeclarations。如果还不了解它的前因后果,建议观看这段精彩的 视频

于是,我果断将项目的 TypeScript 版本升级到了 5.7.2,并顺带更新了相关的 Vite 依赖。正当以为一切顺利的时候,构建时却迎头撞上了这样的报错:

image.png

这也太不科学了!明明 TypeScript 已经是最新版本,怎么还会提示不认识 isolatedDeclarations 呢?于是我开始挖掘问题的根源。


锁定问题:版本冲突大揭秘

怀疑项目中可能依赖了其他版本的 TypeScript,于是我打开了 pnpm-lock.yaml 文件一探究竟。果不其然,发现 Vite 使用的 vite-plugin-dts 间接依赖了 @microsoft/api-extractor,而后者的 TypeScript 版本被硬性指定为 5.4.2

正因为这个依赖链,项目在生成 d.ts 文件时报错了。看清问题的本质后,解决方案就简单了!


解决问题:用 overrides 优雅化冲突

借助 pnpm 的 overrides 功能,可以覆盖依赖链中指定的 TypeScript 版本。以下是我的配置:

"pnpm": {
  "overrides": {
    "@microsoft/api-extractor>typescript": "5.7.2"
  }
}

接下来,只需要运行以下命令重新初始化依赖:

pnpm install

然后再次构建,问题迎刃而解,成功生成了 d.ts 文件!

image.png


Yarn 和 npm 也有类似功能*

顺便查了一下,发现 Yarn 和 npm 同样支持类似的功能:


如果你也遇到了类似问题,不妨试试看这个方法!希望本文能为你节省宝贵的时间。

你在项目构建时还遇到过哪些坑?欢迎在评论区交流!