把老项目切到 strict 往往是一次性的大工程,但如果按开关逐个打开,代价会低很多。
收益最高、改动最集中。大部分报错是函数参数和回调没写类型,补齐之后代码可读性提升明显,也不容易误改。
这一步会暴露大量「可能为空的访问」。建议先在核心模块打开,而不是全项目。空值判断顺手就补了,比等到线上报 undefined is not an object 再回头找划算。
strictPropertyInitialization 在依赖注入或框架生命周期初始化的类上噪音很大,这类模块可以先单独排除,不必为了统一而硬改。
严格模式一旦打开,就不要因为一次紧急发布而临时关掉。把 tsc --noEmit 放进提交流程,比任何规范文档都管用。