Without any context, DataType
would work:
julia> struct A
x
end
julia> struct B
x
end
julia> typeof((A, B(1)))
Tuple{DataType, B}
julia> (A, B(1)) isa Tuple{DataType, B}
true
But I have no idea what this would serve or how exactly this is too “limited” (I think you mean the opposite, permissive).
It does sound a lot like a question about multiple dispatching. Try to extract a MWE from your full case. Take your time to read Please read: make it easier to help you and I’m sure we’d be able to help you.