乐趣区

关于typescript:联合类型Union-Types交叉类型Intersection-Types有什么区别

联结类型(Union Types)和穿插类型(Intersection Types)是 TypeScript 中的两种类型操作符,它们具备不同的行为和用处。

  1. 联结类型(Union Types):

    • 用竖线 | 分隔多个类型,示意一个值能够是其中的任意一种类型之一。
    • 联结类型实用于变量或参数能够承受多种类型的状况。
    • 联结类型应用的是 ” 或 ” 的逻辑关系。
    • 例如,number | string 示意一个值能够是数字类型或字符串类型。
    let value: number | string;
    value = 10; // 非法
    value = "hello"; // 非法
    value = true; // 不非法,因为布尔类型不在联结类型中 
  2. 穿插类型(Intersection Types):

    • 应用 & 符号将多个类型组合在一起,示意一个值必须同时具备所有这些类型的特色。
    • 穿插类型实用于须要将多个类型的属性和办法合并成一个类型的状况。
    • 穿插类型应用的是 ” 与 ” 的逻辑关系。
    • 例如,A & B 示意一个值必须同时具备类型 A 和类型 B 的属性和办法。
    type Person = {name: string;};
    
    type Employee = {employeeId: number;};
    
    let person: Person & Employee;
    person = {name: "John Doe", employeeId: 123}; // 非法
    person = {name: "Jane Smith"}; // 不非法,因为短少 employeeId 属性 

总结:

  • 联结类型示意一个值能够是多种类型之一。
  • 穿插类型示意一个值必须同时具备多个类型的特色。
  • 联结类型应用 | 分隔类型,穿插类型应用 & 分隔类型。
  • 联结类型应用 ” 或 ” 的逻辑关系,穿插类型应用 ” 与 ” 的逻辑关系。

依据你的需要和场景,你能够抉择应用联结类型或穿插类型来示意不同的类型组合和行为。

退出移动版