Вот как enum
типы передаются с помощью TypeScript.
enum Enum {
FOO,
BAR
}
станет
"use strict";
var Enum;
(function (Enum) {
Enum[Enum["FOO"] = 0] = "FOO";
Enum[Enum["BAR"] = 1] = "BAR";
})(Enum || (Enum = {}));
Обратите внимание, что как цифровые, так и строковые ключи предназначены для простого сопоставления с обоими типами и с ними, что позволяет вам сделать что-то вроде этого:
const value = Enum.FOO; // inferred type Enum.FOO
const key = Enum[value]; // inferred type string
Если вы хотите получить массив только числовых или строковых ключей, вы можете сделать это:
const numericKeys = Object.keys(Enum).map(x => parseInt(x)).filter(x => !isNaN(x));
const stringKeys = Object.keys(Enum).filter(x => isNaN(parseInt(x)));
Или для числовых или строковых значений (требуется библиотека es2017
в вашем tsconfig
):
const numericValues = Object.values(Enum).filter(x => typeof x === "number");
const stringValues = Object.values(Enum).filter(x => typeof x === "string");