The ??? type is neutrally effective against all types, and all types are neutrally effective against it.
In the games
The move Curse was given the ??? type when introduced in Generation II, likely because of its mysterious nature. It is so far the only move which completely differs in its use between Pokémon of different types. Its type was changed to the Ghost type in Generation V.
Conversion cannot be used to become ???-type: Curse, the only move of this type, will be ignored by Conversion, such that if a Pokémon uses Conversion while the only other move it knows is Curse, Conversion will fail.
It is a Normal-type move in the early Pokémon Mystery Dungeon series, but was changed to be a Ghost-type move in Pokémon Mystery Dungeon: Gates to Infinity. It was also a Normal-type move in all Pokémon Mystery Dungeon (WiiWare) games.
Pokémon Eggs are displayed as being ???-type in Generation III on their status screen, to maintain the fact that the identity of the Pokémon inside is supposed to be unknown. This does not appear in Generation II, which uses a special status screen for Pokémon Eggs different from that of normal Pokémon, and was removed in Generation IV, when the section of a Pokémon's status screen that displays type was separated from where it was met. From Generation IV on, Eggs are considered as Normal-type Pokémon by the game.
If a Shadow Pokémon has non-Shadow moves that it cannot use yet, they will be marked with ??? type.
Arceus has the Ability Multitype, which changes its type and appearance depending on the Plate it is holding. Likely as a precaution for Arceus hacked to be ???-type, a ???-type sprite of Arceus is present in Pokémon Diamond, Pearl, Platinum, HeartGold, and SoulSilver; however, it is never otherwise used without hacking.
In spin-off games
While Excavate is an unobtainable status move and Vacuum-Cut deals fixed damage akin to Sonic Boom, Wide Slash is a physical move which follows standard damage calculations. Both damaging moves bypass Wonder Guard and do not usually receive STAB.
These moves did not appear from Pokémon Mystery Dungeon: Gates to Infinity onward.
On official material, the ??? type can be used to denote a type that has not yet been revealed. Leading up to the release of Pokémon X and Y, Sylveon's type was listed as ??? on official material until its actual type was revealed to be Fairy.
Pokémon Ruby, Sapphire, Emerald, HeartGold and SoulSilver
Pokémon FireRed and LeafGreen
Pokémon XD: Gale of Darkness
Pokémon Diamond, Pearl and Platinum
Pokémon Battle Revolution
The ??? type is not present in the coding of the Generation V games, since Eggs had not displayed types from Generation IV onward and the type of Curse was newly changed to Ghost. This was possibly because it necessitated making many special cases that would otherwise be unnecessary. Since the only official use of the type at the time of its retirement was for a single non-damaging move, the type itself was essentially useless.