根据枚举键计算字符串的并集

时间:2019-07-23 05:47:50

标签: typescript

有没有一种方法可以计算给定枚举的字符串键并集?

例如,鉴于此:

enum Fruits {
    Apple = 2,
    Orange = 3,
}

我想使用以下值生成一个FruitKey类型:

type FruitKey = 'Apple'|'Orange'; // generate this

这就是我尝试过的。我认为Extract和索引类型会有所帮助,但是它们无效,因为keyof不适用于枚举。

type Keys = keyof Fruits; // Nope. Doesn't work, actually these are object props, not record keys.
type AllValues = Fruits[Keys]; // If the above had worked, these would be: `'Apple'|'Orange'|2|3`
type StrVals = Extract<Values, string>; // just the enum keys. Theoretically. `'Apple'|'Orange'`

playground

1 个答案:

答案 0 :(得分:0)

您与keyof Fruit十分接近。您不需要Fruit枚举成员的键(Fruit类型表示的键)。您想要包含枚举成员的对象的键:

enum Fruits {
    Apple = 2,
    Orange = 3,
}

type Keys = keyof typeof Fruits;