With the help of the type coverage checker, we can actually check what types cover all dual types. Because the existing Best Answer already covers super effectiveness against single types, I will only be showing what types are necessary to cover all dual types.
Absolutely Necessary: Fire, Grass, Fighting, Ground, Dark, Fairy
These types hit the typings or dual typings that only have one weakness: Fire covers Bug/Steel, Grass covers Water/Ground, Fighting covers Normal, Ground covers Electric, Dark covers Normal/Ghost, and Fairy covers Dark/Ghost. These six types also cover all of the unused type combinations, so those will not be an issue when considering future types.
Strong Coverage: Rock
Rock hits many dual typings that the previous six do not, hitting all of Fire, Bug, and Flying in one fell swoop. Additionally, many Pokemon, such as Araquanid, have weaknesses that do not offer much other super-effectiveness; Araquanid's only other weakness is Flying, which does not provide any more coverage other than a few specific type combinations.
Hits Fairies: Poison/Steel
Either Poison or Steel can be chosen to deal with Fairy types; however, both have their issues. For Poison, choosing it will leave only two type combinations left: Ground/Flying and Ghost/Fairy. Unfortunately, these type combinations have no shared weaknesses, meaning two additional types will need to be added. The same issue comes up with Steel, this time being Ground/Flying and Water/Grass.
If Poison is chosen:
Hits Remaining Typings: Water/Ice and Ghost/Steel
Water and Ice cover Ground/Flying, while Ghost and Steel cover Ghost/Fairy. This gives us a final list of:
- Fire
- Grass
- Fighting
- Ground
- Dark
- Fairy
- Rock
- Poison
- Water/Ice
- Ghost/Steel
If Steel is chosen:
Hits Remaining Typings: Water/Ice and Poison/Flying/Bug
As stated before, Water and Ice cover Ground/Flying, while Poison, Flying, and Bug cover Water/Grass. This gives us a final list of:
- Fire
- Grass
- Fighting
- Ground
- Dark
- Fairy
- Rock
- Steel
- Water/Ice
- Poison/Flying/Bug
In total, there are 2 * 2 + 2 * 3 = 10 combinations of types, but 2 of those are repeats that feature both Poison and Steel. Thus, there are 9 total combinations of types that can cover every dual type in the game. This is not a conclusive list, but every other list will have more than 10 types.
Hope I helped!