明确赋值断言为何只能消除检查错误而不能保证字段已经初始化
简答题中等515 次浏览
参考答案与解析
# 核心结论
字段声明后的明确赋值断言 ! 只是开发者向 TypeScript 静态检查器作出的承诺:该字段虽然无法被控制流分析证明,但一定会在读取前完成赋值。它只会消除 strictPropertyInitialization 相关检查,不会生成赋值语句,不会添加运行时守卫,也不会把实际的 undefined 转换为合法值。因此,只有在框架生命周期或基础设施协议确实保证初始化、而编译器无法证明时,才适合有限使用;它不能作为批量消除初始化错误的通用方案。
# 底层机制
开启 strictPropertyInitialization 后,检查器会判断实例字段是否具有字段初始化器,或是否能在构造函数可确
