MST
星途 面试题库

面试题:TypeScript类型系统之联合类型与交叉类型

请阐述TypeScript中联合类型(Union Types)和交叉类型(Intersection Types)的区别,并各举一个实际应用场景的代码示例。
44.7万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

区别

  1. 联合类型(Union Types):表示取值可以为多种类型中的一种。它使用|符号来分隔不同的类型。意味着变量可以是这些类型中的任意一个,但在同一时刻只能是其中某一种类型。
  2. 交叉类型(Intersection Types):表示取值必须同时满足多种类型的要求。它使用&符号,意味着变量必须同时具备这些类型的所有属性和方法。

联合类型示例

function printId(id: number | string) {
    console.log(`ID is: ${id}`);
}

printId(100); 
printId('200'); 

在这个例子中,id参数可以是number类型或者string类型,函数printId可以接受这两种类型的值并打印。

交叉类型示例

interface User {
    name: string;
}

interface Admin {
    role: string;
}

let superUser: User & Admin = {
    name: 'John',
    role: 'admin'
};

这里定义了User接口和Admin接口,superUser变量是User & Admin交叉类型,它必须同时满足UserAdmin接口的要求,即必须同时有namerole属性。