Not possible.
But one parameter can subtype Tuple, thus be any length. You won’t get extra parameter names to annotate fields with, but it doesn’t seem like you need it anyway. This will have a different concrete type for a different tuple length:
julia> struct MyType{T, S<:Tuple{T,T,Vararg{T}}} # tuple >= 2
m::Union{T, S}
MyType(a::A...) where A = new{A, typeof(a)}(a)
end
julia> MyType(1,2,3,4)
MyType{Int64, NTuple{4, Int64}}((1, 2, 3, 4))
julia> MyType(1,2)
MyType{Int64, Tuple{Int64, Int64}}((1, 2))
julia> MyType(1)
ERROR: TypeError: in MyType, in S, expected S<:Tuple{Int64, Int64, Vararg{Int64}}, got Type{Tuple{Int64}}
Not sure how you intend the 1-argument scenario to infer the alternate tuple length though. Might be easier to go for a 1-tuple instead, just store tuples in m.