当前位置: 首页 > news >正文

TS中|和有什么区别

在 TypeScript 中,| 和 & 是用于组合类型的操作符,但它们的作用和行为完全不同:


1. | (联合类型, Union Types)

  • 作用:

    • 表示一个值可以是多种类型中的一种。

    • 使用 | 将多个类型组合成一个联合类型。

  • 使用场景:

    • 当一个变量或参数可能是多种类型时。

    • 常用于处理不确定类型的场景。

  • 示例:

    let value: string | number;
    value = "Hello"; // 合法
    value = 42; // 合法
    value = true; // 错误,boolean 不在联合类型中
  • 注意事项:

    • 在使用联合类型的值时,只能访问所有类型共有的属性或方法。

    • 如果需要访问特定类型的属性或方法,需要进行类型检查或类型断言。

    function printValue(value: string | number) {
      if (typeof value === "string") {
        console.log(value.toUpperCase()); // 安全,value 是 string
      } else {
        console.log(value.toFixed(2)); // 安全,value 是 number
      }
    }

2. & (交叉类型, Intersection Types)

  • 作用:

    • 表示一个值必须同时满足多个类型的条件。

    • 使用 & 将多个类型组合成一个交叉类型。

  • 使用场景:

    • 当需要合并多个类型的属性或方法时。

    • 常用于扩展对象类型或接口。

  • 示例:

    interface Person {
      name: string;
      age: number;
    }
    
    interface Employee {
      id: number;
      role: string;
    }
    
    type EmployeePerson = Person & Employee;
    
    const employee: EmployeePerson = {
      name: "Alice",
      age: 30,
      id: 123,
      role: "Developer",
    };
  • 注意事项:

    • 交叉类型会将所有类型的属性合并,如果属性名相同但类型不同,可能会导致冲突。

    • 交叉类型通常用于对象类型的组合。


3. | 和 & 的区别

特性| (联合类型)& (交叉类型)
含义值可以是多种类型中的一种值必须同时满足多个类型的条件
使用场景不确定类型的场景合并多个类型的属性或方法
类型检查只能访问共有属性或方法可以访问所有类型的属性或方法
示例string | numberPerson & Employee

 


 


4. 总结

  • | (联合类型):

    • 表示“或”的关系,值可以是多种类型中的一种。

    • 适合处理不确定类型的场景。

  • & (交叉类型):

    • 表示“与”的关系,值必须同时满足多个类型的条件。

    • 适合合并多个类型的属性或方法。

根据具体需求选择合适的操作符,可以更灵活地定义和使用类型。

相关文章:

  • 挑选出行数足够的excel文件
  • 前端:最简单封装nmp插件(组件)过程。
  • 什么是Ajax
  • 深度解析 DeepSeek R1 与 Grok-3:智能领域的实力较量
  • 【强化学习的数学原理】第10课-Actor-Critic方法-笔记
  • IP关联:定义、影响及避免策略‌
  • new 一个构造函数的过程以及手写 new
  • 【为什么使用`new DOMParser`可以保持SVG命名空间】
  • Deepseek 怼CHATGPT实况
  • 第二章 分词和嵌入
  • Stm32中SysTick 定时器的使用
  • 挪车小程序挪车二维码php+uniapp
  • 深度优先探索
  • Java的switch
  • Nacos 2.5.0 内置数据库集群部署
  • 如何将Docker运行的镜像写入数据后导出为新的镜像
  • 【小白学HTML5】盒模型(一文讲清margin、padding)_第三讲
  • Stm32定时器输出PWM
  • Fast R-CNN
  • 【小白学HTML5】盒模型_第一讲
  • 国台办:台湾自古属于中国,历史经纬清晰,法理事实清楚
  • 媒体:“西北大学副校长范代娣成陕西首富”系乌龙,但她的人生如同开挂
  • 首个偏头痛急性治疗药物可缓解前期症状
  • 人民日报仲音:大力纠治违规吃喝顽瘴痼疾
  • 2025上海科技节本周六启幕,机器人和科学家同走AI科学红毯
  • 网信部门曝光网络谣言典型案例,“AI预测彩票号码百分百中奖”等在列