[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