Для Missing
фактически реализовано в Base (но не экспортируется) как функция nonmissingtype
. Здесь у вас есть соответствующий код:
nonmissingtype(::Type{Union{T, Missing}}) where {T} = T
nonmissingtype(::Type{Missing}) = Union{}
nonmissingtype(::Type{T}) where {T} = T
nonmissingtype(::Type{Any}) = Any
Так что это, вероятно, должно решить вашу проблему с Missing
(просто import
эта функция из Base
), и у вас есть шаблон, как подобное можно реализовать для других сценариев. Пожалуйста, дайте мне знать, если он отвечает, что вы хотели.