You can use identity to try an narrow the type after replacing, although in this case you’ll only get Real as there are Int and Float in the vector:
julia> identity.(replace(a, ([NaN, missing, ""] .=> 0.0)...))
5-element Vector{Real}:
0.0
0.0
0.0
2
3.0