在不知道特定枚举类型的情况下,通过键获取枚举的值

时间:2019-10-30 15:46:13

标签: typescript enums

我的类型包含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开始抱怨项目永远不会是类型。

1 个答案:

答案 0 :(得分:0)

您应该将所有枚举组合到一个对象中

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

此对象的键入将是下一个

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

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

Menu[item]