Interessante.
Uso muito enum, mas às vezes uso class com propriedades static. Principalmente quando preciso de mais informações no objeto.
Ex.:
class UserRole {
constructor(public slug, public name){}
static get admin () {
return new UserRole("admin", "Administrador do Sistema")
}
}
Meio que funciona como enum mas tem mais informações incluídas