如何在类型脚本中的函数上获取原始变量名称

时间:2018-03-28 22:14:31

标签: typescript enums

export enum Animals {
        Cow,
        Pig
    }

我有一个接收枚举的功能:

export function printEnumName(Enum: any) {
 console.log(someFancyFunctiontoPrintMyEnumName(Enum)); //It should print the enum's name "Animals"
}

我想实现那个花哨的功能,以避免通过参数发送它。

修改 我不想打印动物中的变量,就像我在控制台日志上的评论行(也在帖子的标题上)所提到的那样我要打印"动物"枚举的名称不是接收动物作为参数的函数上的枚举变量。 我尝试使用这种方法进行打印,但它没有起作用:

    export function printEnumName(Enum: any) {
        for (let element in this.printEnumName) {
            console.log(element); //It would be nice to print "Animals" literally animals 
        }
}

2 个答案:

答案 0 :(得分:0)

他们对枚举https://www.typescriptlang.org/docs/handbook/enums.html有很好的描述。

只需访问枚举密钥。

Animals.Cow

要获取姓名,请尝试

  Object.keys(Animals).filter((v) => {
      return isNaN(parseInt(v));
   });

答案 1 :(得分:0)

查看转换为JavaScript后enum的内容是有帮助的:

var Animals;
(function (Animals) {
    Animals[Animals["Cow"] = 0] = "Cow";
    Animals[Animals["Pig"] = 1] = "Pig";
})(Animals || (Animals = {}));

Animals成为常规变量。要获取其名称,您可以应用您应用的任何方法来获取JavaScript中的变量名称,例如Object.keys({Animals})[0]

有关该主题的更多讨论:Variable name as a string in Javascript