TypeScript 联合类型与交叉类型详解

TypeScript 联合类型与交叉类型详解

1. 联合类型 (Union Types)

联合类型表示一个值可以是几种类型之一,使用 | 分隔类型。

基本语法 :

ini 复制代码
type ID = number | string;

特点 :

  • 只能访问所有类型共有的成员
  • 常用于函数参数接受多种类型
  • 需要类型守卫(type guards)来区分具体类型 示例 :
typescript 复制代码
function printId(id: number | string) {
  if (typeof id === 'string') {
    console.log(id.toUpperCase());
  } else {
    console.log(id.toFixed(2));
  }
}

2. 交叉类型 (Intersection Types)

交叉类型将多个类型合并为一个类型,使用 & 连接类型。

基本语法 :

ini 复制代码
type Admin = Person & Permission;

特点 :

  • 包含所有类型的属性
  • 常用于混入(mixins)或扩展接口
  • 新类型具有所有类型的特性 示例 :
ini 复制代码
interface Person {
  name: string;
}

interface Permission {
  level: number;
}

type Admin = Person & Permission;

const admin: Admin = {
  name: 'Alice',
  level: 10
};

3. 联合类型与交叉类型的区别

| 特性 | 联合类型 ( | ) | 交叉类型 ( & ) | |------------|--------------|--------------| | 语义 | 或 | 与 | | 结果类型成员 | 共有成员 | 所有成员合并 | | 典型用途 | 多种可能输入 | 组合/扩展类型 |

4. 高级用法

联合类型与类型守卫 :

typescript 复制代码
function padLeft(value: string, padding: string | number) {
  if (typeof padding === 'number') {
    return Array(padding + 1).join(' ') + value;
  }
  return padding + value;
}

交叉类型与接口扩展 :

css 复制代码
interface A { a: number }
interface B { b: string }

type C = A & B;

const c: C = { a: 1, b: 'test' };

5. 实际应用场景

  • 联合类型 : API响应可能返回成功或错误对象
  • 交叉类型 : 组合多个React高阶组件属性
  • 组合使用 : 创建灵活的类型系统
ini 复制代码
type Result = Success | Error;
type ComponentProps = BaseProps & ThemeProps & StyleProps;
相关推荐
发现一只大呆瓜5 小时前
虚拟列表:支持“向上加载”的历史消息(Vue 3 & React 双版本)
前端·javascript·面试
千寻girling6 小时前
Koa.js 教程 | 一份不可多得的 Node.js 的 Web 框架 Koa.js 教程
前端·后端·面试
程序员清风6 小时前
北京回长沙了,简单谈谈感受!
java·后端·面试
网络安全-杰克7 小时前
2026面试自动化测试面试题【含答案】
自动化测试·软件测试·面试·职场和发展
千寻girling10 小时前
主管:”人家 Node 框架都用 Nest.js 了 , 你怎么还在用 Express ?“
前端·后端·面试
xiaoxue..11 小时前
合并两个升序链表 与 合并k个升序链表
java·javascript·数据结构·链表·面试
猿小羽12 小时前
AIGC 应用工程师(3-5 年)面试题精讲:从基础到实战的系统备战清单
面试·大模型·aigc·agent·rag
boooooooom13 小时前
Pinia必学4大核心API:$patch/$reset/$subscribe/$onAction,用法封神!
javascript·vue.js·面试
试着14 小时前
【huawei】机考整理
学习·华为·面试·机试
石去皿14 小时前
【嵌入式就业6】计算机组成原理与操作系统核心机制:夯实底层基础
c++·面试·嵌入式