Phantom Types
TypeScript 🔴 SeniorDéfinition
Types parametriques dont le paramètre générique n'est pas utilise dans la structure mais sert de marqueur compile-time. Ajoutent de l'information de type sans coût runtime.
Analogie
Comme un tampon invisible sur un billet — l'oeil nu ne le voit pas mais le scanner le détecte.
Exemple de code
type Validated = { __validated: true };
type Raw = { __raw: true };
type Email<T> = string & { __phantom: T };
function validate(e: Email<Raw>): Email<Validated> {
if (!e.includes("@")) throw Error("Invalid");
return e as Email<Validated>;
}
Cas d'usage
Marquer les étapes de validation (raw -> sanitized -> validated) au niveau du système de types.