À retenir
- Offre une grande flexibilité en autorisant plusieurs types pour une seule variable.
- Une seule valeur est stockée à un instant donné.
- Oblige souvent le développeur à vérifier le type avant manipulation pour garantir la sécurité du code.
Un type union est un outil de programmation qui permet à une variable de stocker plusieurs types de données différents, mais un seul à la fois. Imaginez une boîte de rangement dont la forme s'adapte pour accueillir soit un livre, soit un disque compact : elle peut contenir l'un ou l'autre, mais jamais les deux simultanément.
Étymologie
Le terme provient de la théorie des ensembles en mathématiques, où l'union de deux ensembles désigne le regroupement de tous leurs éléments. En informatique, le concept s'est popularisé avec le langage C (mot-clé union) avant d'évoluer vers des formes plus sécurisées dans les langages modernes comme TypeScript ou Swift.
Exemples d'usage
- En
TypeScript, une variable déclaréestring | numberpeut recevoir indifféremment du texte ou un nombre. - En
PHP, une fonction peut retournerarray | null, signifiant qu'elle renvoie une liste de données ou rien du tout. - En
C, uneunionpermet de réutiliser le même emplacement mémoire pour des variables de types différents afin d'économiser de la place.
Cas d'usage
Le type union intervient souvent dans le développement d'API ou d'interfaces web lorsqu'une fonction doit être flexible. Par exemple, une fonction de recherche peut accepter soit un nom (texte), soit un identifiant numérique. Il est aussi utilisé pour la gestion d'erreurs, où une opération renvoie soit le résultat attendu, soit un objet décrivant l'erreur.
Bonnes pratiques
La règle d'or est d'effectuer un contrôle de type (type guarding) avant d'utiliser la variable. Puisque la variable peut être de plusieurs types, le programme doit vérifier lequel est actif pour éviter de tenter une opération impossible (comme essayer de mettre en majuscules un nombre).
Synonymes
Antonymes
Conseil
Si vous utilisez des types unions, essayez de rester sobre : une union de deux ou trois types est gérable, mais au-delà, cela peut rendre votre code confus. Dans ce cas, envisagez plutôt de créer un objet ou une interface plus globale.
Questions fréquentes
Quelle est la différence avec le type 'any' ?
Le type 'any' accepte n'importe quoi sans contrôle, alors que le type union limite strictement le choix à une liste de types définis par le développeur.
Est-ce que cela ralentit le programme ?
Dans la plupart des langages modernes, l'impact est négligeable car la vérification se fait principalement lors de l'écriture du code (compilation).