Should be straightforward to implement a union case for the most used properties in callbacks, such as children or value. The rest can be captured by Custom:
type ComponentProperty =
| Children
| Value
| Custom of string
static member convert =
//do the mapping to the correct string version here