如何在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'
}
}