MST

星途 面试题库

面试题:TypeScript中联合类型与交叉类型在对象合并场景下的区别

假设有两个类型TypeA和TypeB,TypeA = { name: string; }; TypeB = { age: number; }。请分别使用联合类型和交叉类型来合并这两个类型,并说明合并后类型的特点以及使用场景。
31.1万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

联合类型合并

  1. 代码示例
type TypeA = { name: string; };
type TypeB = { age: number; };
type UnionType = TypeA | TypeB;
  1. 特点
    • 一个值可以是TypeA类型或者TypeB类型。
    • 当访问联合类型的值时,只能访问两个类型共有的属性。如果要访问特定类型的属性,需要进行类型守卫(如typeofinstanceof等)。
  2. 使用场景
    • 当一个变量可能有多种不同类型的值,但是这些类型之间没有必然的联系时使用。例如,一个函数可能返回两种不同类型的结果,一种是包含name属性的对象,另一种是包含age属性的对象。

交叉类型合并

  1. 代码示例
type TypeA = { name: string; };
type TypeB = { age: number; };
type IntersectionType = TypeA & TypeB;
  1. 特点
    • 合并后的类型同时具备TypeATypeB的所有属性。
    • 即一个值必须同时满足TypeATypeB的类型定义。
  2. 使用场景
    • 当需要一个对象同时拥有多个不同类型的属性时使用。比如,定义一个用户对象,既要有姓名(name),又要有年龄(age),就可以使用交叉类型将表示姓名的类型和表示年龄的类型合并。