升级了一个图表库之后 tsc 报 TS7016 Could not find a declaration file for module 'chart-lite',路径指向 node_modules 里那个包。同样的写法半年前还能编译。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
npm i -D @types/chart-lite
// 没有 @types 就手写 src/types/chart-lite.d.ts
declare module 'chart-lite' {
export function render(el: HTMLElement, opt: object): void;
}
包的清单里 types 字段为空,仓库里也没有附带声明文件,编译器只能按无类型模块处理。allowJs 没打开时也不可能从源码反推,只能直接报找不到声明。这一点先确认清楚,后面就不用反复试。
「TS7016 声明文件缺失」这类改动最怕改一半,回滚脚本先准备好,再动生产。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,先看包里有没有现成的 d.ts 以及清单里的 types 指向;确认社区有没有对应的 @types 包 有就装成开发依赖;没有就自己写一份最小声明 只声明用到的那几个导出;把声明目录放进 include 免得换机器后丢失。
改完照着核一遍,TS7016 消失 render 的参数能补全 打包后运行时调用也正常。
