使用打字稿我想将Enum转换为
type keys = "key1"| "key2"
// or
type values = "value1" | "value2"
我可以在课堂上做
class C { a: number; b: string;}
type Keys = keyof C; // "x" | "y"
type Values = C[keyof C]; // string | number
我想做什么
enum Roles {Admin = "admin", Client = "client"};
? --> type Keys = ...; // "Admin" | "Client"
? --> type Values = ...; // "admin" | "client";
可能会有所帮助
enum Roles {Admin = "admin", Client = "client"};
type values = {[K in Roles]: K} // { admin: Roles.Admin; client: Roles.Client; }
答案 0 :(得分:1)
使用枚举,我不确定该怎么做,但是您可以使用type来实现所需的目标:
type RolesType = { Admin: "admin", Client: "client"}
type Keys = keyof RolesType // "Admin" | "Client"
type Values = RolesType[Keys] // "admin" | "client"
答案 1 :(得分:0)
虽然您可以很容易地以keyof typeof Roles
的形式获取枚举键(这很好地解释了here),但不幸的是,无法获得枚举值联合类型。有关更多详细信息,请参见类似问题的this answer。一种解决方法是使用Object而不是JeromeBu suggested枚举:
type Roles = { Admin: "admin", Client: "client" };
type Keys = keyof Roles;
type Values = Roles[Keys];