The problem with Pokemon's type logic has always been that they mix classic RPG elemental types (normal, fire, ice, electric, water, ground) with species based types (bug, grass, dragon, fairy, ghost), fighting styles (fighting, dark, psychic) and physical traits (poison, flying, rock, steel.)
It's an incoherent mishmash of concepts. You could argue it's what makes Pokemon unique but it makes typings unpredictable and often inconsistent.