Valor por defecto del enum Typescript
Los tutoriales de Java se han escrito para el JDK 8. Los ejemplos y las prácticas descritas en esta página no aprovechan las mejoras introducidas en versiones posteriores y pueden utilizar tecnología que ya no está disponible.Consulte los cambios en el lenguaje Java para ver un resumen de las características actualizadas del lenguaje en Java SE 9 y las versiones posteriores.Consulte las notas de la versión del JDK para obtener información sobre las nuevas características, las mejoras y las opciones eliminadas o obsoletas de todas las versiones del JDK.
Un tipo enum es un tipo de datos especial que permite que una variable sea un conjunto de constantes predefinidas. La variable debe ser igual a uno de los valores que se han predefinido para ella. Algunos ejemplos comunes son las direcciones de la brújula (valores de NORTE, SUR, ESTE y OESTE) y los días de la semana.
Debe utilizar los tipos enum siempre que necesite representar un conjunto fijo de constantes. Esto incluye tipos enum naturales como los planetas de nuestro sistema solar y conjuntos de datos en los que se conocen todos los valores posibles en el momento de la compilación, por ejemplo, las opciones de un menú, los indicadores de la línea de comandos, etc.
¿Qué es un enum en JavaScript?
Un enum es una “clase” especial que representa un grupo de constantes (variables inalterables). Los enum vienen en dos sabores cadena y numérico .
¿Podemos utilizar enum en JavaScript?
Los tipos Enums o Enumerados son tipos de datos especiales que establecen variables como un conjunto de constantes predefinidas. En otros lenguajes se proporcionan tipos de datos enumerados para utilizarlos en esta aplicación. Javascript no tiene tipos enum directamente en él, pero podemos implementar tipos similares como enums a través de javascript.
Javascript obtiene el valor del enum
En otras palabras, si estuvieras depurando y tuvieras que leer el valor en tiempo de ejecución de un enum numérico, el valor es a menudo opaco – no transmite ningún significado útil por sí mismo (aunque el mapeo inverso puede ayudar a menudo). Los enums de cadena permiten dar un valor significativo y legible cuando se ejecuta el código, independientemente del nombre del miembro del enum en sí.
Aunque las enumeraciones son objetos reales que existen en tiempo de ejecución, la palabra clave keyof funciona de forma diferente a lo que cabría esperar de los objetos típicos. En su lugar, utilice keyof typeof para obtener un tipo que represente todas las claves de Enum como cadenas.
Estos escollos pertenecen sólo a los enums const de ambiente (básicamente enums const en archivos .d.ts) y a compartirlos entre proyectos, pero si está publicando o consumiendo archivos .d.ts, estos escollos probablemente se aplican a usted, porque tsc –declaration transforma los archivos .ts en archivos .d.ts.
Una diferencia importante entre los enums ambientales y no ambientales es que, en los enums regulares, los miembros que no tienen un inicializador se considerarán constantes si su miembro enum precedente se considera constante.
Enums
Recuerde que los campos del enum (valor, nombre y código en este ejemplo) no son necesarios para la comprobación de la identidad y sólo están ahí por comodidad. También el nombre de la propiedad size no necesita ser codificado, sino que puede ser establecido dinámicamente. Así que suponiendo que sólo conozcas el nombre de tu nuevo valor enum, puedes añadirlo sin problemas:
Vayamos directamente al problema: el tamaño del archivo. Todas las demás respuestas enumeradas aquí hinchan su código minificado hasta el extremo. Le presento que para la mejor reducción posible del tamaño del código por minificación, rendimiento, legibilidad del código, gestión de proyectos a gran escala, y sugerencia de sintaxis en muchos editores de código, esta es la forma correcta de hacer enumeraciones: variables con guiones bajos.
Observe que, en el código anterior, es realmente fácil añadir un nuevo tipo de mascota: sólo tendría que añadir una nueva entrada después de ENUM_PET_RAT y actualizar ENUMLEN_PET en consecuencia. En otros sistemas de enumeración podría ser más difícil y con más errores añadir una nueva entrada.
Typescript get enum desde el valor
Llevando esto un paso más allá, uno podría extraer la lógica en una función con un número variable de argumentos y produciendo un objeto congelado. Esta técnica tiene muy pocos beneficios, por lo que una mejor alternativa sería crear una clase simple. Después de todo, los enums son más comunes en los lenguajes de programación orientados a objetos, así que esto parece un gran ajuste.
Una clase Enum sólo requeriría un constructor con un número variable de argumentos. Su trabajo es añadir cada clave al objeto enum y congelar la instancia recién creada. Una mejora potencial sería proporcionar acceso a los valores del enum como cadenas. Obviamente, esto se puede lograr usando Object.keys(), pero un método con nombre podría resultar en un conflicto con uno de los valores del enum, y mucho menos el método contaminando el resultado.
Usar un símbolo ES6 es la solución obvia aquí, ya que no contaminará el resultado de Object.keys() y nunca entrará en conflicto con ningún valor del enum. Llevando esto un paso más allá, Symbol.iterator sería una gran elección ya que permitiría que el enum se considerara iterable y lo haría aún más útil. Poniendo todo esto junto, aquí está mi clase Enum y cómo usarla: