I've heard that Whitney's Miltank is really hard to defeat without a fighting type, so what fighting types can I catch before this, so I am guaranteed to win against her.
There are two Fighting type lines available before Whitney.
Both of these Pokemon do well against the third Gym. Other Pokemon like Geodude and Onix are easy to catch and are valuable against Miltank as well.
You don't necessarily win if you have a super effective type, you know :P
Catch a Drowsee at Route 34. Then, go to the 5th floor of the Goldenrod Department Store and trade that for a Machop. That;s the only Fighting type this far in the game.
Source
If you want a fighting type of YOUR ot then get a Pokemon with the move headbutt use headbutt on a tree and a heracross might await you It'll also do good in the game guarenteed
Catch a Drowzee, and then somewhere in Goldenrod City (not sure where) you can get a Machop trade.
Machop is a good in-game suggestion, since Machamp will smash. xD Of course, it is still possible to defeat Whitney without super-effectiveness. So good luck. ;)