Stating "the drow is a 10th level cleric" is makes it easy for the
module writer but hard for the
DM running the module.
When I write my own stuff, I'm both. And the sum of the work is harder because of that model.
When I'm using someone else's stuff, there are a hell of a lot more DMs running it than people writing it.
---
The concept of "spell" should be clear. How spells are fueled should vary.
"The mage has a spellbook and can cast each of the following spells from it once before completing a long rest. (List of spells). In addition, the mage can cast each of (list of spells) as rituals once each before completing a long rest."
"The death cultist has a single 3rd level spell slot and knows the following spell-abilities it can cast with it:
Lifedrinking Blade: +7 vs AC, 1d4+3 piercing and 2d8 necrotic damage. This attack has advantage on a creature with less than maximum HP. If it hits, the cultist regains their 3rd level spell slot. They can regain a spell slot this way up to 4 times before completing a long rest."
Neither of these use PC spellcasting rules. They have spells, the spells have levels (or the slots do), there is some resource management.
They are not PC classes, they are not built as PCs, they are built to be simpler to run, and built to probably die within the first time they fight a PC (but not always).
---
NPCs that are "fighter like" are great; even "battlemaster like" (subclass inspired). But I have neither the time nor inclination to build NPCs as PCs nor run NPCs as PCs.
In 5e, look at the Champion. They are quite clearly a Fighter-type. They aren't a Fighter.