This PR adds the basic convenience types for manual type construction of logics using kea-forms. There are two primary ways of doing this - directly using FormValues and FormActions types or using the convenience MakeFormLogicType wrapper that pushes the former two utilities into kea's MakeLogicType.
In order to get around the TypeScript restrictions on template literal and generic types as keys, I had to create an array of tuples to interpolate and a type utility parallel to Object.entries to turn the interpolation into an array using mapped types. I believe that this is pretty computationally heavy from the typescript side, so I'd especially like feedback on how to improve that if you can think of a meaningful way to do it.
I'll update documentation after I get feedback on the direction of this PR. (cc @mariusandra)
This PR adds the basic convenience types for manual type construction of logics using
kea-forms
. There are two primary ways of doing this - directly usingFormValues
andFormActions
types or using the convenienceMakeFormLogicType
wrapper that pushes the former two utilities intokea
'sMakeLogicType
.In order to get around the TypeScript restrictions on template literal and generic types as keys, I had to create an array of tuples to interpolate and a type utility parallel to
Object.entries
to turn the interpolation into an array using mapped types. I believe that this is pretty computationally heavy from the typescript side, so I'd especially like feedback on how to improve that if you can think of a meaningful way to do it.I'll update documentation after I get feedback on the direction of this PR. (cc @mariusandra)
Closes #4