How to shorten type definition with many AbstractArray fields?

I have a struct like:

mutable struct MyType{A<:AbstractArray, B<:AbstractArray, C<:AbstractArray, D<:AbstractArray}
    vertices::A
    normals::B
    subsets::C
    isenabled::BitArray{1}
    size::Int
    levelweight::D
    levelscore::D
end

Can I somehow shorten this type definition?
My only idea is aliasing AbstractArray, like:

const AA = AbstractArray
mutable struct MyType{A<:AA , B<:AA , C<:AA , D<:AA}
    vertices::A
    normals::B
    subsets::C
    isenabled::BitArray{1}
    size::Int
    levelweight::D
    levelscore::D
end

Something like this?

mutable struct MyType{T<:AbstractArray}
    vertices::T
    normals::T
    subsets::T
    isenabled::BitArray{1}
    size::Int
    levelweight::T
    levelscore::T
end

AFAIK that way every field has to be same type, which I don’t want.

I don’t think there is a better solution than the alias, or just leaving it as is.

TBH, I think it is fine not to specify supertypes for some slots in the definition. It is not necessary for speed, an inner constructor can take care of validation if necessary (in a more general way), and while supertypes have some value as documentation, they can also just get in the way easily.

2 Likes