SuperAPI AI 工具集

exclusive-or-properties

通用与其它

查看项目

更新于 10-16 00:06

技能介绍

用途:在 TypeScript 中建模「互斥或」(XOR)——多个属性中恰好有一个必须存在,不能一个都没有,也不能同时出现多个。常见于组件 props、API 参数和配置对象。

主要能力:用「可选 never 属性」把约束提升到编译期。每个变体让自身属性必填、其余属性为 never,再用联合类型组合。相比对象联合更安全,比运行时检查意图更清晰。

用法:定义变体联合,例如 type LoadConfig = { url: string; filePath?: never; content?: never } | { url?: never; filePath: string; content?: never } | { url?: never; filePath?: never; content: string }。合法值只传一个来源;空对象、传两个或三个都会在编译期报错。组件 props 可用交叉类型组合公共字段与变体联合;API 参数同理。属性较多时可用辅助类型 XOR<A, B> 或 ExactlyOne<T> 减少重复。

适用场景:互斥配置项、替代式组件 props、有排他变体的 API 参数、需要阻止非法属性组合的场合。

限制与注意:若允许多个选项同时存在,则不应使用 XOR。仅靠注释或运行时校验无法在编译期拦截错误。属性很多时手写变体会冗长,建议用辅助类型。资料未提供安装命令、包名或平台信息。