MST
星途 面试题库

面试题:TypeScript 联合类型与交叉类型在复杂对象中的应用

假设有两个接口 `UserInfo` 包含属性 `name: string` 和 `age: number`,`UserExtra` 包含属性 `email: string` 和 `phone: string`。现在要求定义一个新类型,它是 `UserInfo` 和 `UserExtra` 的交叉类型,同时定义一个函数,该函数接受一个联合类型,这个联合类型是上述交叉类型和一个只包含 `id: number` 属性的接口组成,函数需要根据传入对象的具体类型进行不同的操作并返回结果,请实现相关代码。
28.4万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
interface UserInfo {
  name: string;
  age: number;
}

interface UserExtra {
  email: string;
  phone: string;
}

// 定义交叉类型
type UserFullInfo = UserInfo & UserExtra;

interface WithId {
  id: number;
}

function handleUser(user: UserFullInfo | WithId): string {
  if ('id' in user) {
    return `The id is ${user.id}`;
  } else {
    return `Name: ${user.name}, Age: ${user.age}, Email: ${user.email}, Phone: ${user.phone}`;
  }
}