It states that Struggle is Normal. While sorta true in Gen 1 where Struggle couldn't hit ghost types. Sense Gen 2 onward struggle hits all thus it's not normal.
That's because:
>It still displays as Normal-type if hacked onto a Pokémon's moveset.
So it's still classed as normal for type classification purposes, but it's capable of hitting everything, even through Wonder Guard.
Struggle (Bulba)