Das was du (glaube ich) vor hast, kann man nicht statisch prüfen. Der Aufruf von setState('id', MyEnum.enumValA); hat für TypeScript nichts mit createState('id', MyEnum.enumValA, false, {...}); zu tun.
Außerdem kommt wie gesagt noch dazu, dass Record<string, string> ist bei den Keys auch flexibel ist - number geht aus Kompatibilitätsgründen zu JavaScript auch. Und Enums mit TypeChecking ist auch eher so lala.
Wenn du was findest, was für dich funktioniert, dann ists gut. Aber ich fürchte das global zu nutzen wird schwierig.