如何在typescript(angular)中获取枚举泛型类型的名称?

如何在typescript(angular)中获取枚举泛型类型的名称?,typescript,Typescript,我有一个枚举 export enum Status{ Pending = 1, Working = 2, Finish = 3 } 使用 var name=GetName(状态); 我还有其他方法来获取枚举的名称 export function GetName<T>(en: T): string{ // I want to get name here to result 'Status' } 导出函数GetName(en:T):字符串{ //我想

我有一个枚举

export enum Status{
    Pending = 1,
    Working = 2,
    Finish = 3
}
使用

var name=GetName(状态);
我还有其他方法来获取枚举的名称

export function GetName<T>(en: T): string{
    // I want to get name here to result 'Status'
}
导出函数GetName(en:T):字符串{ //我想在此处获取“状态”结果的名称 }
从技术上讲,enum是typescript中的一个对象

所以函数可以是

export function getName<T>(enumObject: T, value: any): string {
  Object.keys(enumObject).find(key => {
    return enumObject[key] === value;
  });
}
导出函数getName(enumObject:T,value:any):字符串{
key(enumObject).find(key=>{
返回enumObject[键]==值;
});
}

据我所知,您无法使用枚举数执行此操作,但是,如果您创建了类型化映射对象,则可以通过查找以下唯一属性来声明其类型:

enum Status {
    Pending = 1,
    Working = 2,
    Finish = 3
}

interface StatusMap {
 pending: Status.Pending;
 working: Status.Working;
 finish: Status.Finish;
}

const obj: StatusMap = { pending: Status.Pending, working: Status.Working, finish: Status.Finish };

function checkIfStatus(obj: StatusMap): 'Status' | 'NotStatusOrSomething' { 
 if ('pending' in obj) { 
   return 'Status'
  } else {
    return 'NotStatusOrSomething'
  }
}

这是关于Typescript而不是角度。不,我需要枚举的名称来获取字符串中的“状态”。@MuhammetCanTONBUL在Typescript中是。这是否回答了您的问题?为枚举生成包含对象的变量。因此,您要求获取变量的名称,这是不可能的(而且可能无论如何都不会有用,因为在缩小后将被更改),我不需要这样,它将返回“挂起”或“工作”这样的结果。我想要的结果是“状态”@Viko-您想要的是类型名称,而不是值?@Igor是的,我想要类型名称。我已经使用了枚举映射。我使用其他枚举来映射它。
enum Status {
    Pending = 1,
    Working = 2,
    Finish = 3
}

interface StatusMap {
 pending: Status.Pending;
 working: Status.Working;
 finish: Status.Finish;
}

const obj: StatusMap = { pending: Status.Pending, working: Status.Working, finish: Status.Finish };

function checkIfStatus(obj: StatusMap): 'Status' | 'NotStatusOrSomething' { 
 if ('pending' in obj) { 
   return 'Status'
  } else {
    return 'NotStatusOrSomething'
  }
}