← 返回首页

TypeScript 严格模式迁移的一些取舍

2026-10-16 · 工程化

把老项目切到 strict 往往是一次性的大工程,但如果按开关逐个打开,代价会低很多。

先开 noImplicitAny

收益最高、改动最集中。大部分报错是函数参数和回调没写类型,补齐之后代码可读性提升明显,也不容易误改。

再开 strictNullChecks

这一步会暴露大量「可能为空的访问」。建议先在核心模块打开,而不是全项目。空值判断顺手就补了,比等到线上报 undefined is not an object 再回头找划算。

可以暂时跳过的

strictPropertyInitialization 在依赖注入或框架生命周期初始化的类上噪音很大,这类模块可以先单独排除,不必为了统一而硬改。

关键是别回退

严格模式一旦打开,就不要因为一次紧急发布而临时关掉。把 tsc --noEmit 放进提交流程,比任何规范文档都管用。