Компромиссы
keyof typeof over as const object usually beats TS enum — single source of truth, no runtime enum object, tree-shakeable, values stay real literals для log/serialize.
keyof on type with index signature → string | number, often too wide для exhaustive key list — closed object + as const для exact keys.
typeof only reads in-scope values, never evaluates — no typeof someExpression() for call result (that's ReturnType); typeof fn — function type.
Итог
as const + keyof typeof vs enum; index signature widens keys; typeof не вызывает код.