Using Enums and Literal Types

Use Enums and literal types in this lesson.

We'll cover the following

TypeScript is nothing if not chock-full of many different ways to specify a type that is limited to a few values. We’ve just looked at literal types, but those are effectively just a subset of what you can do in TypeScript using an enumerated type, or enum.

Defining enums

TypeScript enums are very flexible and allow you to do a lot of things that seem, frankly, to be rather pointless. I’ll try to minimize talking about those.

At the simplest, you can define an enum in TypeScript just by providing a list of values for it. So, if we wanted to convert our TicketStatus type to an enum, we could do this:

enum TicketStatus {Unsold, Held, Purchased, Refunded, Invalid}

Which we can then use as TicketStatus.Unsold, TicketStatus.Held and so on. By convention, the individual elements of the enum are capitalized because they are also types.

If we make this change, we get a lot of downstream compiler errors. Every time we assign a string to a TicketStatus or compare a string to a TicketStatus, we need to replace that string with one of the enum values.

For example, in our pre-enum seat.tsx file, we currently have:

Get hands-on with 1200+ tech skills courses.