I like the approach and doing it specifically is clearer (although I've had to do it so much in my typical codebases that the general approach helps). I strongly advise against having the static global const name 'shadow' the type name, which will trip future devs. The use of CAPS for statics is a common convention across a few languages but anything distinct from the type name is better (e.g.
userTypeList
if that's more your style). Unrelated to the shadowing, in code review I would reject any runtime value that had PascalCase. In Typescript, that is conventionally reserved for types. —
cefn 46 secs ago