Recursively converts a type into a derived type where any field can be a string or a function that takes the old value.
Recursively converts a type into a derived type where any field can be a string or a function that takes the old value.