MST

星途 面试题库

面试题:TypeScript枚举类型的反向映射及应用

已知有一个TypeScript枚举`Color`,定义了几种颜色。要求实现一个功能,既能通过颜色名称获取对应的枚举值,又能通过枚举值反向获取对应的颜色名称(即反向映射)。请详细描述实现思路,并给出具体代码。此外,阐述在实际项目中这种反向映射可能会在哪些场景下用到。
23.0万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 首先定义 Color 枚举。
  2. 为了实现反向映射,可以手动创建一个对象,将枚举值作为键,枚举名称作为值进行存储。这样就可以通过枚举值获取对应的名称。通过枚举本身就可以通过名称获取枚举值。

代码实现

// 定义Color枚举
enum Color {
    Red = 1,
    Green = 2,
    Blue = 3
}

// 创建反向映射对象
const colorReverseMap: { [key: number]: string } = {};
Object.keys(Color).forEach(key => {
    const value = Color[key as keyof typeof Color];
    if (typeof value === 'number') {
        colorReverseMap[value] = key;
    }
});

// 通过颜色名称获取枚举值
function getColorValueByName(name: keyof typeof Color): number | undefined {
    return Color[name];
}

// 通过枚举值获取颜色名称
function getColorNameByValue(value: number): string | undefined {
    return colorReverseMap[value];
}

// 测试
console.log(getColorValueByName('Red')); // 输出: 1
console.log(getColorNameByValue(2)); // 输出: Green

实际项目场景

  1. 前端界面展示:在前端开发中,比如在一个颜色选择器的组件中,从后端获取到颜色的枚举值,需要在界面上显示对应的颜色名称,就可以利用反向映射将枚举值转换为友好的显示名称。
  2. 日志记录与分析:在日志系统中,记录的是颜色枚举值,在分析日志时,为了方便理解,需要将这些枚举值转换为对应的颜色名称进行展示。
  3. 配置文件解析:配置文件中可能存储的是颜色枚举值,在程序加载配置时,需要将这些值转换为对应的颜色名称进行进一步处理或展示。