Enums en Typescript

Author
Por Darío Rivera
Publicado el 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

Acerca de Darío Rivera

Author

Application Architect at Elentra Corp . Quality developer and passionate learner with 10+ years of experience in web technologies. Creator of EasyHttp , an standard way to consume HTTP Clients.

LinkedIn Twitter Instagram

Sólo aquellos que han alcanzado el éxito saben que siempre estuvo a un paso del momento en que pensaron renunciar.