source's type from keyof typeof Obj | "$none" to keyof typeof Obj?if (source in Obj) then obviously typeof source === keyof typeof Obj, if not directly then due to Obj's keys definitely including source..startsWith("$") but for some reason that's still not a type predicate to a ${arg0}${string} literal, Object.keys(Obj).includes(source) is just an ugly equivalent to the codeblock above, source[0] === "$" doesn't work.Obj[source as keyof typeof Obj] seems to work, which is not only ugly but entirely defeats the purpose of using typescript there.