症状
编译器报 TS2739 并列出对象相对目标类型缺少的属性。这常发生在向接口新增必填字段之后,随后所有内联构造该对象的调用点都报错。该错误是编译器在强制契约,而非检查器本身的问题。
诊断
读取缺失属性列表;用工厂函数集中构造完整对象;重新评估字段该必填还是可选。
npx tsc --noEmit
根因
对象没有提供目标类型全部必需属性,原因是字面量不完整,或接口要求了并非每个调用点都能提供的字段。
修复
补齐必需属性;更好的做法是通过工厂构造以保证字段齐全;字段并非总是可用时改为可选,让类型反映事实,避免调用方臆造值。优于散布类型断言。
验证
重新运行类型检查确认错误清除,再跑测试确认构造的对象具含预期值。类型通过且数据正确才是完整修复。
常见陷阱
为消除错误给字段随便填默认值会造成语义错误;应判断字段是否真的必填。