Búsqueda de sitios web

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]]

Artículos relacionados