枚举值到数组

时间:2020-06-05 05:51:08

标签: arrays typescript enums

我只想获取一个枚举的值作为数组。因此,如果您有:

    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)不匹配。 我该怎么做?

1 个答案:

答案 0 :(得分:0)

您无法提供的简短答案,因为打字稿会将您的枚举编译为以下内容

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

link to typescript playground

但是,由于枚举不能包含数字键,因此您可以执行以下操作来获取键

Object.keys(A).filter(isNaN)

之所以可行,是因为枚举不能包含数值作为条目