fixed the issue. Will look into that further If you don't need the "variadic type arguments" N1...Nk explicitely, you can use a tuple of Vararg of some UnionAll types:

code :

```
julia> MyType3{T} = Tuple{Vararg{MVector{M, <:T} where M}}
Tuple{Vararg{MArray{Tuple{M},#s14,1,M} where #s14<:T where M,N} where N} where T
julia> (MVector{2}([1,2]), MVector{3}([1,2,3])) isa MyType3{Int}
true
julia> (MVector{2}([1,2]), MVector{3}([1,2,3])) isa MyType3{Number}
true
julia> (MVector{2}([1,2]), MVector{3}([1,2,3])) isa MyType3{String}
false
julia> (MVector{2}([1,2]), MVector{3}([1,2,3])) isa MyType3
true
julia> (MVector{2}(["a", "b"]), MVector{3}([1,2,3])) isa MyType3
true
```

```
julia> struct MyType7{T, Ns<:Tuple, D}
data::D
function MyType7(vecs::Vararg{MVector{M, T} where M}) where {T}
Ns = [typeof(v).parameters[4] for v in vecs]
new{T, Tuple{Ns...}, typeof(vecs)}(vecs)
end
end
julia> MyType7(MVector{2}([1,2]), MVector{3}([1,2,3]))
MyType7{Int64,Tuple{2,3},Tuple{MArray{Tuple{2},Int64,1,2},MArray{Tuple{3},Int64,1,3}}}(([1, 2], [1, 2, 3]))
julia> typeof(ans)
MyType7{Int64,Tuple{2,3},Tuple{MArray{Tuple{2},Int64,1,2},MArray{Tuple{3},Int64,1,3}}}
```