将枚举值转换为数组

22 浏览
0 Comments

将枚举值转换为数组

这个问题已经有答案了

如何获取枚举条目的名称?

我想要将枚举的值作为数组获取。如果你有:

    enum A {
        dog = 1,
        cat = 2,
        ant = 3
    }

我想要的结果是:[\"dog\", \"cat\", \"ant\"],通过以下方式:

    Object.values(A)

但是它会得到:[\"dog\", \"cat\", \"ant\", 0, 1, 2]

此外,返回的值(0, 1, 2)也不会匹配给定的值(1, 2, 3)。如何实现这个功能?

admin 更改状态以发布 2023年5月22日
0
0 Comments

简短的回答是,你不能这样做,因为TypeScript会将你的枚举编译成以下内容

var A;
(function (A) {
    A[A["dog"] = 1] = "dog";
    A[A["cat"] = 2] = "cat";
    A[A["ant"] = 3] = "ant";
})(A || (A = {}));

链接到TypeScript Playground

然而,由于枚举不能具有数字键,你可以采用以下方法获取键

Object.keys(A).filter(isNaN)

这是有效的,因为枚举不能将数字值作为条目包含在内

0