首页 > 解决方案 > 在不知道具体枚举类型的情况下,按键获取枚举的值

问题描述

我有一个由 3 个枚举组成的类型。

enum TextItem {
  BOOK = "inventory.book",
  PAGE = "inventory.page"
}

enum FoodItem {
  BURGER = "food.burger",
  LETTUCE = "food.lettuce",
}

enum DrinkItem {
  WATER = "drinks.water",
  COLA = "drinks.cola",
}

type Item = TextItem | FoodItem | DrinkItem;

const getEnumValue(item: Item) {
  // What to do here?
}

Item函数中传递了一个枚举类型getEnumValue。是哪个项目,我不知道。但可以肯定它是类型Item(例如DrinkItem.WATER)。

在函数中传递项目时getEnumValue,如何确定关联的字符串值?

我在想而不是我要说的项目keyof Item。但是随后 Typescript 开始抱怨 item 的类型从不。

标签: typescriptenums

解决方案


您应该将所有枚举组合成一个对象:

const MENU: IMenu = {
  ... FoodItem,
  ... DrinkItem
};

接下来为这个对象输入

interface IMenu {
  [key: string]: Item;
}

在函数中,您将轻松调用所需的值:

Menu[item]

推荐阅读