strictNullChecks为false时,显式声明Nullable变量有何益处?
Ipsum | null的实际价值 当strictNullChecks设为false时,TypeScript确实允许Ipsum类型的变量被赋值为null或undefined,编译器不会报错,但显式声明为public lorem: Ipsum | null;相比public lorem: Ipsum;有明确的实用价值:
明确传递变量的预期状态
多人协作中,代码的可读性优先于编译器规则。显式添加| null直接告诉所有开发者:这个变量设计上就允许为null,不是笔误或临时兼容写法。如果只写Ipsum,其他成员很可能默认认为该变量永远非空,遇到运行时null错误时,排查成本会很高。为未来开启严格模式做准备
多数成熟项目最终会开启strictNullChecks(TypeScript官方推荐的严格配置项)。现在显式声明| null,未来切换严格模式时,这部分代码无需修改即可兼容;反之,之前的隐式null赋值会触发大量编译错误,需要逐个修正,工作量极大。获得更精准的编辑器提示
即使编译器不强制检查,VS Code等编辑器的TypeScript服务会根据显式类型给出更贴心的提示。比如调用lorem.someMethod()时,若声明了| null,编辑器会提醒你先判断变量是否为null,提前规避潜在的运行时bug。统一团队编码规范
在复杂项目中,统一的编码约定能减少沟通成本。约定“预期可能为null/undefined的变量必须显式声明联合类型”,不管strictNullChecks是否开启,都能让代码风格更一致,避免因类型模糊导致的误解。
结论:虽然编译器层面两种声明等效,但从可读性、可维护性、未来兼容性出发,显式声明Ipsum | null完全有意义,尤其适合多人协作的复杂TypeScript项目。
内容的提问来源于stack exchange,提问作者Razwill

