TypeScript 词条目录
前端Wiki/词条/联合与交叉类型

联合与交叉类型

定义联合取多种类型之一,交叉取多个类型的全部属性

联合类型用 | 表示,值可以是几种类型之一;交叉类型用 & 表示,同时满足多个类型。联合常见于灵活入参:function fmt(v: string | number),处理时需要类型守卫收窄。交叉常见于组合能力:type A = { name: string } & { age: number } 得到的对象两个属性都要有。

两者常结对使用:联合负责表达多分支,交叉负责拼接碎片类型。接口组合时同名属性会按交叉规则合并,若类型不兼容会出现 never。实际开发中交叉类型大量出现在工具类型内部,比如 Partial 与 Pick 的组合约束,把多个约束条件拼成一个参数类型。

JavaScript
type Admin = { name: string; role: string };
type Timestamps = { createdAt: Date };

type User = Admin & Timestamps;         // 交叉:属性全都要

function print(v: string | number) {    // 联合:多种之一
  if (typeof v === 'string') console.log(v.toUpperCase());
  else console.log(v.toFixed(2));
}

const u: User = { name: 'tom', role: 'admin', createdAt: new Date() };
⚠ 常见误区
🔗 相关词条联合类型与字面量类型交叉类型与类型别名
← 返回来源章节交叉类型与类型别名