全仓统计 @ts-ignore 有 181 条,其中六十多条下面那行其实早就不报错了,注释还留着。新同事照着抄,同一个问题又开始扩散。日志里能对上时间点,这种反而好排。

ts-ignore 对下一行无条件生效,错误修好了也不会提示,时间一长没人知道哪条还有用。expect-error 在没报错时会自己报错,等于带一个自动过期的提醒。这一点先确认清楚,后面就不用反复试。

grep -rl "@ts-ignore" src | xargs sed -i 's/@ts-ignore/@ts-expect-error/g'
npx tsc --noEmit 2>&1 | grep TS2578 | wc -l

围绕「ts-ignore 清理」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。

处理上按这个顺序:先全局替换成 @ts-expect-error 让失效的注释暴露出来;跑一遍 tsc 把报未使用的那批删掉;剩下确实需要的每条补一句原因;CI 里加一条禁止新增 ts-ignore 的检查。

结果对不对很好判断,TS2578 未使用的注释清完 总数降到 100 以内 CI 能拦住新增。

作者 9823189