I did this for fun but this gets really long so sorry if the descriptions are super basic or generic, but writing a full length answer for everything would be very tiring.
AA: Ice/ghost. Ice elemental with a ghostly apparition as it's appearance.
Abaddon: Ghost/dark. Mists and vapor best fit with ghost and dark types.
Alchemist: Poison/Fighting. Poison for alchemy, fighting for a beefy ogre trained in fighting.
AM: Dark. This might be a weird one, but if he is the ANTI mage, and most mages are psychic, I think it makes sense that he is immune to them and deals super effective damage. Also his ways might be a bit twisted.
Arc Warden: Electric. Has a lot of undertones of magnetism and electric pulses in his kit.
Axe: Fighting. Generic brawler.
Bane: Dark. An elemental based off of fear.
Batrider: Fire/Flying. Flies on a bat and has many fire related spells.
Beastmaster: Ground. Controls creatures, which generally suggests a command over nature, so ground fits best.
Bloodseeker: Dark/Fighting. Hardest one to place for me but his methods of fighting are twisted.
Bounty: Normal. Kinda just an average cat-like creature that can sneak well.
Brewmaster: Normal. Until he ults, he is just a panda that drinks a lot. Afterwards he becomes fire/flying/rock/dark based off of the pandas, but overall I think he stays normal
Bristle: Fighting. Just a brawler.
Brood: Bug. Just a giant insect
Centaur: Normal. Fighting could be argued but generally if the creature is just that animal, in this case just a centaur, they are normal type.
Ck: dark. Best fit for chaos.
Chen: Normal. Just a guy pretty much, and his methods of mind control don't really make me think of psychic.
Clinkz: Fire/Ghost. Burning skeleton.
Clockwerk: Normal/steel. I gave many (but not all) keens the normal type since many of them are just a person in a suit.
Cm: ice. Controls ice magic.
Dark seer: Psychic. Even though he has dark in his name, he doesn't have twisted methods. Is a commander and has control over some unknown magic.
Dark Willow: Dark/Fairy. Twisted and Sadistic fae creature.
Dawnbreaker: Fighting. Nothing fits dawn super well so fighting seemed like the best fit.
Dazzle: Poison/Dark. Has weird, twisted magic.
Death Prophet: Ghost. Is pretty much just a ghost that cant die.
Disruptor: Electric. Electric mage.
Doom: fire/ground. Considering doom is essentially lucifer from Christian mythos, the ground type (rules over the earth) makes sense to me, and scorched earth can easily have a "ground" component to it.
Dk: steel/dragon. Armored knight that turns into a dragon
Drow: ice/fighting. Has some kind of ice magic and is a skilled archer.
Earth Spirit: ground/rock. Has command over the earth itself, in both the land and in rocks.
Earthshaker: ground. Earth incarnate.
Elder titan: ground. Created the world, and many of his spells effect the ground.
Ember spirit: fire. Fire incarnate.
Ench: grass/fairy. Fae-like creature with healing and nature magic.
Enigma: dark. Void elemental.
Faceless void: dark/psychic. Has some kind of future prophesizing, and control over time.
Grimstroke: dark/ghost. Is a very twister character and has control over spirits.
Gyro: normal/flying. Flies a machine.
Hoodwink: grass. uses many plant-based spells, like acorns and a wood-looking dart for her ult.
Huskar: fire. uses fire magic of some sort, and most other types don't fit (IMO)
Invoker: psychic. very intelligent. I don't think dark fits super well.
Io: electric. Magnetism and atoms.
Jakrio: ice/fire. Even though he's a dragon, I think that would have to come from an ability. Ice/fire is a core concept of jakiro.
Jugg: fighting. generic swordsman
Kotl: normal/psychic. Many light based spells are normal type. Psychic type is debatable.
Kunkka: water ghost. Ghostly pirate with command over the tides.
Legion: steel/fighting. Heavily armored warrior.
Lesh: electric/dark. Many of his spells have to deal with electric energy, and he has a very twisted mind.
Lich: ice/ghost. Ghostly ice mage.
Lifestealer: dark/fighting. Twisted beast.
Lina: fire. fire mage
Lion: fire. fire mage pt 2
Ld: ground. Nature magic (druid).
Luna: dark/fairy. Debatable on fairy but most moon based attacks are fairy type so I gave it to her and mirana. Luna is more cruel than mirana
Lycan: ground. Not a whole lot fits lycan tbh. Dark is sort of hit or miss, normal is too basic. Ground sort of fits since he is a beast of the earth that can summon wolves at command.
Magnus: electric. kinda similar to lycan, not a whole lot fits magnus. Electric fits though since he has control over magnetic poles.
Marci: normal/fighting. regular girl with super strength
Mars: steel fighting. skilled fighter with a huge shield.
Medusa: ground. Snakes are typically creatures of the earth, and she is turned into one and can launch other snakes as people.
Meepo: ground. Creature that lives underground
Mirana: normal fairy. same reason as luna. normal since mirana is less cruel and more "average" in terms of fighting prowess.
Mk: fighting. legendary warrior.
Morph: water. literally water.
Naga: water. creature of the sea.
Np: grass. Nature magic that better fits in grass than ground.
Necro: poison/ghost. Plague mage that is sort of undead.
Night stalker: dark flying. Terrifying creature that can fly
Nyx: bug psychic. a bug that can hurt the mind (mana burn)
Ogre: normal/fire. a regular ogre with light fire magic, blessed by the goddess of luck. I think normal fits the "luck" category the most.
Omni: steel. Weird one but is pretty well armored so I guess steel.
Oracle: dark psychic. prophet that forsees the future
Od: dark psychic. otherworldly being.
Pango: ground. Creature of the earth, with many land-based spells.
Pa: fighting. skilled assassin
Pl: fighting. not a whole lot fits pl but giving him normal doesn't feel right either, so fighting it is.
Phoenix: fire flying. a phoenix… yeah that's it lol
Primal: dark. unhinged beast.
Puck: fairy dragon. fae dragon
Pudge: poison. closest to anything pudge will fit into, with stenches and dismembering.
Pugna: ghost. undead mage, the magic seems to be of a different realm so its hard to give him anything else I think. ghostly magic is honestly the best descriptor imo.
Qop: poison dark. succubus with poisonous daggers.
Razor: electric/dark. whips people to their destination in the after life with an electric whip.
Riki: normal. kinda just a dude. Not particularly skilled at fighting from what I can tell, just very stealthy.
Rubick: psychic. powerful mage.
Sand king: bug ground. scorpion form of the being of sand.
Sd: poison dark. cruel cult master that has poison spells.
Sf: dark. demon lord.
Shaman: psychic. not a whole lot fits shaman either but he has some sort of magic so psychic kind of fits.
Silencer: psychic. intelligent mage.
Sky: psychic flying. skywrath people are mages that live in the clouds.
Slardar: water/fighting. Slitherine body guard
Slark: water dark. sadistic fish creature
Snap: normal fire. normal for snap, fire for her mount.
Sniper: normal. nothing fits sniper. Normal fits better than steel for just bullets, imo
Spec: ghost. spectral being.
Sb: dark. planeshifter.
Storm: electric. air/storm elemental.
Sven: fighting. skilled fighter.
Techies: steel fire. this is the best I could come up with for bombs.
Ta: psychic fighting. skilled assassin with psychic powers to protect herself.
Tb: dark. sadistic demon.
Tide: water. leviathan
Timber: steel normal. normal guy in a tree killing mech
Tinker: psychic. very intelligent keen and nothing else fits him really.
Tiny: rock. stone golem
Treant: grass ground. treant with lots of nature magic.
Troll: fighting. debatably could be dark but he's more angry than sadistic I think?
Tusk: ice fighting. Brawler from the north
Underlord: dark fire. Powerful demon that can summon hellfire.
Undying: ghost. Zombie is close enough to ghost and not much else suits him
Ursa: normal fighting. a bear that is very skilled at fighting
Venge: dark. sadistic ex-skywrath
Veno: poison. venomous creature
Viper: poison flying. venomous creature pt 2
Visage: ghost flying. looks pretty ghostly and can turn invisible, and holds power over the underscape.
Void spirit: dark psychic. void elemental.
Warlock: dark fire. sort-of cruel master of summoning, calling forth a fiery demon.
Weaver: bug. even though he has a lot of time powers, that isn't really a type and I'm not going to give weaver dragon. so pure bug it is.
Wind: normal. Flying didn't feel right, so probably just normal with a lot of flying type moves.
Wyvern: ice dragon. wyvern that has ice breath and powers.
Wd: poison. lots of unusual magic and potions.
Wk: ghost. undead being, debatably a ghost.
Zeus: electric. powerful wielder of magic.
Sorry if those were very basic descriptions but there is a LOT of dota heroes. So in total,
Dark: 27
Fighting: 20
Fire: 14
Grass: 4
Water: 6
Electric: 8
Psychic: 14
Ghost: 13
Normal: 16
Ice: 7
Ground: 12
Rock: 2
Bug: 4
Poison: 9
Flying: 7
Steel: 7
Dragon: 3
Fairy: 5
Fairy types are the strongest against the majority of heroes, being super effective against dark and fighting types. So start spamming puck, mirana, luna, dark willow, and ench!
Source: https://www.reddit.com/r/DotA2/comments/wi4z5y/i_wasnt_satisfied_with_the_other_post_about_dota/