MST

星途 面试题库

面试题:TypeScript 高级类型之交叉类型与联合类型的项目应用

在一个前端项目中,有一个函数接收用户信息,用户信息可能是普通用户(包含姓名和年龄字段),也可能是管理员用户(除了姓名和年龄,还包含权限字段)。请用 TypeScript 的联合类型和交叉类型来定义相关类型,并实现这个函数,使其能正确处理不同类型的用户信息。
35.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试
// 普通用户类型
type NormalUser = {
  name: string;
  age: number;
};

// 管理员用户类型
type AdminUser = NormalUser & {
  permission: string;
};

// 联合类型表示用户可能是普通用户或管理员用户
type User = NormalUser | AdminUser;

// 处理用户信息的函数
function handleUser(user: User) {
  if ('permission' in user) {
    console.log(`管理员用户 ${user.name},年龄 ${user.age},权限:${user.permission}`);
  } else {
    console.log(`普通用户 ${user.name},年龄 ${user.age}`);
  }
}

// 测试普通用户
const normalUser: NormalUser = { name: '张三', age: 20 };
handleUser(normalUser);

// 测试管理员用户
const adminUser: AdminUser = { name: '李四', age: 30, permission: 'admin' };
handleUser(adminUser);