Когда у значения есть фиксированный набор именованных вариантов, помогает enum — перечисление:
enum Status { Active, Paused, Done, }
let s: Status = Status.Active;
По умолчанию вариантам присваиваются числа (Active = 0, Paused = 1, Done = 2). Можно задать строковые значения явно — так читается понятнее в логах и данных:
enum Role { Admin = "admin", Editor = "editor", Viewer = "viewer", }
function can(role: Role): boolean { return role === Role.Admin; }
enum даёт осмысленные имена вместо «магических» чисел и строк, а редактор подсказывает доступные варианты. Часто вместо enum берут литеральный union-тип ("admin" | "editor") — он легче; выбор зависит от стиля проекта.