Enums en Typescript
El tipo de dato Enum en TypeScript permite definir un conjunto de valores dentro de un stack. Es muy útil cuando estamos definiendo interfaces o alias de tipos. Para definir este tipo de dato podemos utilizar la palabra reservada Enum tal y como veremos a continuación.
Declaración
Definimos un Enum tal y como si estuvieramos definiendo una interfaz, pero solamente definiremos los valores que contiene, no su tipo.
enum UserType {
Admin,
Guest
}
Para usar este tipo de dato solo debemos referenciarlo tal y como se muestra a continuación.
interface User {
type: UserType;
name: string;
}
Inicialización
Como es de esperarse, tal y cómo ocurre en el lenguaje C, si no se especifican los valores del enum, se suponen enteros empezando desde el cero. Observa en el siguiente ejemplo cómo se utiliza el valor cero para hacer referencia al valor Admin
definido en el enum.
function print_hello(user: User): string
{
return 'Hello ' + user.name;
}
print_hello({
type: 0, // Admin
name: 'Steve'
})
Porsupuesto que esto es meramente ilustrativo, siempre podrás pasar el valor llamando directamente al tipo enum así:
print_hello({
type: UserType.Admin,
name: 'Steve'
})
TypeScript también permite definir enums con valores string, para esto basta asignar el tipo así:
enum UserType {
Admin = 'Admin',
Guest = 'Guest'
}
interface User {
type: UserType;
name: string;
}
function print_hello(user: User): string
{
return 'Hello ' + user.name;
}
print_hello({
type: UserType.Admin,
name: 'Steve'
})
Aunque internamente el código es transpilado utilizando una cadena de caracteres, debe utilizarse la referencia al tipo y no el literal string. Lo siguiente sería incorrecto.
print_hello({
type: 'Admin',
name: 'Steve'
})
Siempre que definamos enums de esta forma debemos referenciarlos con notación de punto.
UserType.Admin