I avoid the enum type at all costs. They're poorly implemented in TypeScript, they have unexpected behaviour at runtime that can catch developers off guard, and they're overly complex. It's very easy to misuse them, and aligning a team on one way of using them is difficult.
Instead, it's easier to either use union types, i.e.
type MyUnion = 'FOO' | 'BAR' | 'FOOBAR';
or as const objects
const SOME_CONSTANTS = {
FOO: 'SOME_VALUE',
BAR: 'OTHER_VALUE',
} as const