面试题答案
一键面试创建异构枚举
在TypeScript中,可以通过以下方式创建异构枚举:
enum UserStatus {
ACTIVE = 1,
INACTIVE = 2,
PENDING = "pending review"
}
编写处理函数
function processUserStatus(status: UserStatus): string {
if (typeof status === 'number') {
switch (status) {
case UserStatus.ACTIVE:
return "用户处于活动状态";
case UserStatus.INACTIVE:
return "用户处于非活动状态";
default:
return "未知状态码";
}
} else {
return `状态描述: ${status}`;
}
}
异构枚举在实际复杂业务逻辑中的优势
- 灵活性:异构枚举允许在同一枚举中表示不同类型的数据,使得代码可以在单一结构中处理多种相关的概念,例如结合状态码和状态描述,提供更全面的业务信息。
- 语义清晰:通过使用枚举,代码可以更清晰地表达业务含义。例如,
UserStatus.ACTIVE
比直接使用数字1
更具有语义。 - 减少魔术值:避免在代码中到处使用无意义的数字或字符串,提高代码的可维护性。
可能存在的风险
- 类型混淆:由于异构枚举中值类型不同,在使用时可能会导致类型混淆,例如意外地将状态码当作状态描述处理,从而引发运行时错误。
- 代码复杂度增加:处理异构枚举需要更多的类型检查和分支逻辑,增加了代码的复杂度,尤其是在复杂的业务逻辑中,可能会使代码变得难以理解和维护。
- 兼容性问题:某些语言或工具可能不支持异构枚举,在跨语言或跨平台的项目中,可能会带来兼容性挑战。