把老项目迁移到 TypeScript strict 模式

一个五万行的老项目如何分批开启 strict:先开哪些选项、怎么统计进度、哪些 any 值得留着。

目录 · 3 节
  1. 推荐的开启顺序
  2. 统计进度
  3. 小结

一次性打开 strict: true,编译器会甩给你几千个错误。更可行的做法是按选项逐个开启。

推荐的开启顺序

  1. noImplicitAny
  2. strictNullChecks
  3. strictFunctionTypes
  4. 其余选项
tsconfig.json
{
"compilerOptions": {
"noImplicitAny": true,
"strictNullChecks": true
}
}

统计进度

0 1000 2000 3000 第 1 周 第 2 周 第 3 周 第 4 周 第 5 周 2140 1620 980 410 60 错误数 0 1000 2000 3000 第 1 周 第 2 周 第 3 周 第 4 周 第 5 周 2140 1620 980 410 60 错误数
strictNullChecks 错误数随时间下降(示例数据)

小结

strict 迁移是马拉松,不是冲刺。每周清掉一部分,比一次性大改更安全。