Type compare

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.