联合类型、交叉类型与类型守卫应如何组合建模业务状态?
简答题中等361 次浏览
参考答案与解析
核心结论:联合类型表示“多个候选中的一个”,交叉类型表示“同时满足多个约束”,类型守卫则把运行时证据反馈给控制流分析。业务状态最稳健的建模方式通常是带判别字段的联合类型,让每个状态只携带该状态合法的数据,再使用穷尽检查处理全部分支。交叉类型适合组合彼此兼容的能力,但不适合无条件拼接存在冲突的领域模型。
底层机制方面,访问联合类型成员时,只能直接使用所有成员共同拥有且兼容的属性。检查字面量判别字段、使用 typeof、instanceof、in,或者调用返回类型谓词的函数后,编译器会依据控制流路径收窄变量。用户自定义守卫的形式为 value is Target,其实现仍是普通布尔函数;编译器信任声明的谓词,却不会证明
