// 1. 定义接口User
interface User {
name: string;
role: UserRole;
}
// 2. 创建类UserInfo
class UserInfo implements User {
name: string;
role: UserRole;
constructor(name: string, role: UserRole) {
this.name = name;
this.role = role;
}
getRoleDescription(): string {
switch (this.role) {
case UserRole.Admin:
return "管理员";
case UserRole.Editor:
return "编辑者";
case UserRole.Viewer:
return "查看者";
default:
return "";
}
}
}
// 3. 修改enum、接口和类以支持特殊用户
enum UserRole {
Admin = 'admin',
Editor = 'editor',
Viewer = 'viewer',
SuperAdmin = 'super_admin',
SuperEditor = 'super_editor',
SuperViewer = 'super_viewer'
}
interface User {
name: string;
role: UserRole;
isSuper?: boolean;
}
class UserInfo implements User {
name: string;
role: UserRole;
isSuper?: boolean;
constructor(name: string, role: UserRole, isSuper?: boolean) {
this.name = name;
this.role = role;
this.isSuper = isSuper;
}
getRoleDescription(): string {
let baseDescription = "";
switch (this.role) {
case UserRole.Admin:
case UserRole.SuperAdmin:
baseDescription = "管理员";
break;
case UserRole.Editor:
case UserRole.SuperEditor:
baseDescription = "编辑者";
break;
case UserRole.Viewer:
case UserRole.SuperViewer:
baseDescription = "查看者";
break;
default:
baseDescription = "";
}
return this.isSuper? `超级${baseDescription}` : baseDescription;
}
}