You can also have the conversion happen automatically, without specifying extra type arguments. But I think this requires getting rid of the automatic Base.@kwdef kwargs constructor. For example:
julia> struct MyStruct
id::Int
value::Symbol
end
julia> MyStruct(; value, kws...) = MyStruct((value=Symbol(value), kws...)[fieldnames(MyStruct)])