[Typesciprt] Enumでlengthを取りたい

例えば、以下のようなEnumを作ったとする。

export enum testEnum {
  HOGE = "Hoge",
  FUGA = "Fuga",
  PIYO = "Piyo",
};

これがどのようにjsにトランスパイルされるかというと、

var testEnum;

(function (testEnum) {
  testEnum["HOGE"] = "Hoge";
  testEnum["FUGA"] = "Fuga";
  testEnum["PIYO"] = "Piyo";
})(testEnum || (testEnum = {}));

となる。

要はオブジェクトに変換されているということなので、Object.entries()を使うことができる。

Object.entries()はオブジェクト内の[key, value]を全て列挙するもの

console.log(Object.entries(testEnum));
// [["HOGE", "Hoge"], ["FUGA", "Fuga"], ["PIYO", "Piyo"]]

console.log(Object.entries(testEnum).length);
// 3