Estoy trabajando en un archivo de definiciones para la API de mapas de Google para TypeScript.
Y necesito definir una enumeración como tipo, por ejemplo. google.maps.Animation
que contiene dos propiedades: BOUNCE
y DROP
.
¿Cómo se debe hacer esto en TypeScript?
enums
typescript
eNepper
fuente
fuente
Respuestas:
TypeScript 0.9+ tiene una especificación para enumeraciones:
La coma final es opcional.
fuente
enum
construcción en esta etapa, ya que el equipo de TypeScript ha dejado bastante claro que va a cambiar, por lo que se romperá.A partir de TypeScript 0.9 (actualmente una versión alfa), puede usar la definición de enumeración como esta:
De forma predeterminada, a estas enumeraciones se les asignará 0, 1 y 2 respectivamente. Si desea establecer explícitamente estos números, puede hacerlo como parte de la declaración enum.
Listado 6.2 Enumeraciones con miembros explícitos
Ambos ejemplos se sacaron directamente de TypeScript para programadores de JavaScript .
Tenga en cuenta que esto es diferente a la especificación 0.8. La especificación 0.8 se veía así, pero estaba marcada como experimental y es probable que cambie, por lo que tendrá que actualizar cualquier código anterior:
Descargo de responsabilidad : este ejemplo 0.8 se rompería en versiones más recientes del compilador de TypeScript.
fuente
Esto ahora es parte del lenguaje. Consulte TypeScriptLang.org> Tipos básicos> enumeración para obtener la documentación sobre esto. Un extracto de la documentación sobre cómo usar estas enumeraciones:
O con números de respaldo manuales:
También puede volver al nombre de la enumeración usando, por ejemplo
Color[2]
.Aquí hay un ejemplo de cómo va todo junto:
Esto registrará:
Porque, en el momento de escribir esto, el Typecript Playground generará este código:
fuente
Solo otra nota de que puede hacer una enumeración de id / string con lo siguiente:
fuente
str
y cómoid
usarlo?abstract class
Sería más apropiado evitar la creación de instancias ya que TypeScript no tiene una noción destatic class
?Actualizar :
Como señaló @ iX3, Typecript 2.4 tiene soporte para cadenas de enumeración.
Ver: Crear una enumeración con valores de cadena en Typecript
Respuesta original:
Para los valores de miembro de cadena, TypeScript solo permite números como valores de miembro de enumeración. Pero hay algunas soluciones / trucos que puede implementar;
Solución 1:
copiado de: https://blog.rsuter.com/how-to-implement-an-enum-with-string-values-in-typescript/
Hay una solución simple: simplemente transmita la cadena literal a cualquiera antes de asignar:
solución 2:
copiado de: https://basarat.gitbooks.io/typescript/content/docs/types/literal-types.html
Puede utilizar un literal de cadena como tipo. Por ejemplo:
Aquí hemos creado una variable llamada foo que solo permitirá que se le asigne el valor literal 'Hola'. Esto se demuestra a continuación:
No son muy útiles por sí solos, pero se pueden combinar en una unión de tipos para crear una abstracción poderosa (y útil), por ejemplo:
fuente
Enums en mecanografiado:
Las enumeraciones se colocan en el lenguaje mecanografiado para definir un conjunto de constantes con nombre. Usar enumeraciones puede hacernos la vida más fácil. La razón de esto es que estas constantes suelen ser más fáciles de leer que el valor que representa la enumeración.
Creando una enumeración:
Este ejemplo de los documentos mecanografiados explica muy bien cómo funcionan las enumeraciones. Observe que nuestro primer valor de enumeración (Up) se inicializa con 1. Todos los siguientes miembros de la enumeración numérica se incrementan automáticamente partir de este valor (es decir, Abajo = 2, Izquierda = 3, Derecha = 4). Si no inicializamos el primer valor con 1, la enumeración comenzaría en 0 y luego se incrementaría automáticamente (es decir, Abajo = 1, Izquierda = 2, Derecha = 3).
Usando una enumeración:
Podemos acceder a los valores de la enumeración de la siguiente manera:
Observe que de esta manera somos mucho más descriptivos en la forma en que escribimos nuestro código. Las enumeraciones básicamente nos impiden usar números mágicos (números que representan alguna entidad porque el programador les ha dado un significado en un contexto determinado). Los números mágicos son malos por las siguientes razones:
fuente