Javascript 如何在Typescript中获取枚举类型名称

Javascript 如何在Typescript中获取枚举类型名称,javascript,typescript,Javascript,Typescript,我在Typescript中有以下枚举 export enum Color { // ... values } 如何获取枚举类型名称ieColor 我尝试了(typeof Color).toString(),但结果是对象 为什么我需要这个 我想在angular中创建一个名为LookupService的服务,它将有一个方法将Color作为函数的类型或泛型参数传递,并将返回值数组和每个枚举值的翻译文本 我可以传递字符串,但我想使用typescript的强大功能使其键入并防止键入错误 我的功能是

我在Typescript中有以下枚举

export enum Color {
  // ... values 
}
如何获取枚举类型名称ie
Color

我尝试了
(typeof Color).toString()
,但结果是
对象

为什么我需要这个 我想在angular中创建一个名为
LookupService
的服务,它将有一个方法将
Color
作为函数的类型或泛型参数传递,并将返回值数组和每个枚举值的翻译文本

我可以传递字符串,但我想使用typescript的强大功能使其键入并防止键入错误

我的功能是

getLookup<E>(): Array<{key: E, text: string}> 
{
    const result = mybackend.query(name of E);
    return result
}
getLookup():数组
{
const result=mybackend.query(E的名称);
返回结果
}
用法如下所示

this.lookupService.get(Color);
this.lookupService.get<Color>();
this.lookupService.get(颜色);
this.lookupService.get();

枚举编译为简单的JS对象。它唯一的“名称”是分配给它的变量。你真的不能反向查找这个。您想做什么,因为这听起来有点像黑客,但可能类似于
console.log(Object.keys({Color})[0])?@Reza是的,我没有正确思考。但是如果您已经知道
Color
是您想要的变量,那么整个对象的创建是毫无意义的-您可以只做
“Color”
,因为您知道这就是名称。您不需要使用变量来生成名称。@Reza让我们回到为什么需要变量的类型安全名称上来?如何生成变量名并确保它没有拼写错误?因为通常您应该使用
Color.RED
等-如果您拼写错误,TS编译器将捕获,比如说,
Color.RED
。使用字符串
“Color”
听起来是错误的。@NickParsons你知道有什么黑客把它变成通用的,比如
getEnumTypeName():string{return Object.keys({E:E})[0];}
I get
'E'只引用一个类型,但在这里被用作一个值
错误