Skip to main content
Version: Latest (0.56.x)

Enums

Enums, short for enumerations, provide a way for developers to define a collection of named constants. They are useful for documenting the purpose of the code or for establishing a set of distinct scenarios. Enums can be either numeric or string-based. For other data types, consider using unions.

The basics

You can declare enums using the enum keyword. The members of an enum are separated by commas , and can be either identifier TypeSpecs or string literals.

enum Direction {
North,
East,
South,
West,
}

In the above example, we haven't defined the representation of the constants. Depending on the context, enums might be handled differently.

Assigning values to enums

You can assign custom values to enum members using the : operator.

enum Direction {
North: "north",
East: "east",
South: "south",
West: "west",
}

These values can also be integers.

enum Foo {
One: 1,
Ten: 10,
Hundred: 100,
Thousand: 1000,
}

Or even floating-point numbers.

enum Hour {
Zero: 0,
Quarter: 0.25,
Half: 0.5,
ThreeQuarter: 0.75,
}

Combining enums

You can combine enums using the spread ... pattern. This copies all the members from the source enum to the target enum, but it doesn't establish any reference between the source and target enums.

enum DirectionExt {
...Direction,
`North East`,
`North West`,
`South East`,
`South West`,
}

How to reference enum members

You can reference enum members using the . operator for identifiers.

alias North = Direction.North;