如何在TypeScript中创建耦合类型,实现A-X、B-Y的配对约束?
实现TypeScript关联配对类型
要实现A与X、B与Y的强制配对,你可以用联合类型来定义MyInterface,让它仅包含两种合法的组合分支:
步骤1:定义基础类型
先明确你的A、B、X、Y类型(以下为示例定义,可替换为你实际的类型):
// 示例基础类型,可根据实际需求修改 type A = { type: 'A' }; type B = { type: 'B' }; type X = { type: 'X' }; type Y = { type: 'Y' };
步骤2:定义关联的联合类型
通过联合类型限定仅允许合法的属性组合:
type MyInterface = | { a: A; x: X } | { a: B; x: Y };
验证效果
合法赋值(无类型错误)
const valid1: MyInterface = { a: { type: 'A' }, x: { type: 'X' } }; const valid2: MyInterface = { a: { type: 'B' }, x: { type: 'Y' } };
非法赋值(触发TypeScript类型错误)
// 错误:类型不匹配MyInterface的任何分支 const invalid1: MyInterface = { a: { type: 'A' }, x: { type: 'Y' } }; // 错误:类型不匹配MyInterface的任何分支 const invalid2: MyInterface = { a: { type: 'B' }, x: { type: 'X' } };
原理说明
联合类型的每个分支都是独立的对象类型,TypeScript会严格检查赋值是否匹配其中任意一个分支。当尝试混合不匹配的属性(比如A配Y),该对象无法符合联合类型的任何分支,因此会触发类型错误,实现强制配对的约束。
内容的提问来源于stack exchange,提问作者Ólavur Nón
相关产品推荐
相关产品推荐

