1. exactOptionalPropertyTypes 在库发布与消费的类型一致性
exactOptionalPropertyTypes 是什么?它在库发布与消费场景中如何影响类型一致性?开启后有哪些需要注意的边界?
- exactOptionalPropertyTypes 开启后可选属性与显式 undefined 的严格区分
- 对库作者类型声明与消费者使用方式的约束
- 与 strict 家族其他选项的协作及迁移成本
exactOptionalPropertyTypes 开启后,可选属性(prop?: T)只允许"属性缺失",不允许显式赋值为 undefined;未开启时 prop?: T 等价于 prop?: T | undefined。这一差异在库发布场景影响重大:库作者声明的可选回调、配置项在消费者传入 undefined 时会被拒绝,迫使消费者用条件判断或 ?? 兜底,从而在编译期暴露真实的 undefined 传播路径。对库消费者而言,开启后必须显式处理"属性存在但值为 undefined"与"属性缺失"两种状态,避免把 undefined 当作"未传"滥用。
本题考察对可选属性语义精确化的理解:exactOptionalPropertyTypes 不是简单的严格模式开关,而是把"缺省"与"显式 undefined"两种状态在类型层面分离,这对库 API 的契约设计和消费端的赋值习惯都有直接影响,回答时应说明其意义、影响面与迁移注意事项。