typescript - Obtener el primer elemento de un enum de un enum
¿Es posible obtener el primer elemento de un enum en TypeScript?
Por ejemplo, Option.All en este enum:
enum Option {
All = "all",
Mine = "mine",
}
Intentado, pero no se compila:
const first: Option = Option[0]; // first should be All. This won't compile - Property '0' does not exist on type 'typeof Option'.
Respuesta #1
Una opción es esencialmente un objeto.
Así es como se define cuando se compila a JS:
var Option;
(function (Option) {
Option["All"] = "all";
Option["Mine"] = "mine";
})(Option || (Option = {}));
Puedes usar Object.keys() o Object.values() para poder convertir un objeto en un arreglo.
Así, para hacer que first='Todo', puedes usar:
enum Option {
All = "all",
Mine = "mine",
}
const first = Object.keys(Option)[0];
console.log(first)
Si quieres experimentar con cómo se ven las cosas entre TS y JS, puedes usar el Playground de TS. He cargado este enlace con el código que mostré aquí.
Si quieres que firstValue sea del tipo Option, usa Object.values(Option)[0].
El playground de Typescript parece tener un problema con el nombre Option, así que si lo cambias a Options, muestra correctamente que el primero es del tipo Options: Playground
enum Options {
All = "all",
Mine = "mine",
}
const first = Object.values(Options)[0];
console.log(first) // 'all' of type Options
Mi entorno local no muestra esa misma rareza.
Respuesta #2
Por favor, intenta esto:
Option[Object.keys(Option)[0]]
