Types intersections
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 36 sur 80.
Les unions indiquent qu’une valeur est d’un type ou d’un autre. Les types intersection vont dans l’autre sens : l’esperluette & combine des formes de tables en un type qui possède tous les champs de chaque partie :
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- un Person doit avoir les DEUX champs
local user: Person = {
name = "Alice",
age = 25,
}Omettez age et le vérificateur se plaint : une intersection signifie « et », jamais un choix à la carte. Cela vous permet de construire de grandes formes à partir de petits éléments réutilisables : définissez des types ciblés pour des préoccupations distinctes, puis assemblez-les selon vos besoins :
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Un point important à propos de Luau : faites l’intersection de formes de tables (et de types de fonctions), pas de types primitifs. Une expression comme number & string n’a aucun sens, puisqu’aucune valeur ne peut être les deux à la fois. Lorsque vous voulez « cette forme plus cette autre forme », & est l’outil qu’il vous faut.
À l’exécution, bien sûr, un Person est simplement une table Lua ordinaire : l’intersection n’existe que pour le vérificateur.
Défi
FacileCombine deux petites formes en une seule.
- Écris
type HasName = {name: string},type HasAge = {age: number}ettype Person = HasName & HasAge. - Crée
local user: Person = {name = "Omar", age = 31}. - Affiche
`Name: {user.name}, Age: {user.age}`.
Appuie sur Run Code : le résultat affiche Name: Omar, Age: 31.
Essayez vous-même
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) afficher la ligne contenant le nom et l’âge
Toutes les leçons de Introduction à Luau
1Premiers pas avec Luau
Qu'est-ce que Luau ?Pourquoi utiliser Luau ?Votre premier code LuauVérification de type et modes d'erreurRécapitulatif : Introduction à Luau4Travailler avec les fonctions
Typer les paramètres et les valeurs de retourTyper les fonctions anonymesFonctions sans valeur de retourParamètres optionnelsValeurs par défaut des paramètresValeurs par défaut pour les booléensFonctions variadiquesDéfinir des types de fonctionsRécapitulatif : fonctions typées7Projet : gestionnaire de tâches typé
Projet : la structure d’une tâcheFonction pour ajouter une tâche2Types fondamentaux
Nombre, chaîne de caractères et booléenLe type « any » : une échappatoireLe type « unknown »Types nil et optionnelsL’inférence de types en actionAnnotations de type explicitesRécapitulatif : exercices sur les types fondamentaux5Alias, unions et intersections
Alias de types pour les types primitifsTypes unionsTravailler avec les types unionsTypes littérauxTypes intersectionsCombinaison d'alias de typesRécapitulatif : Combinaisons de types avancées3Tables typées : tableaux et maps
Tableaux typésAjouter et lire des élémentsQu’est-ce qu’un type Map ?Déclarer et accéder aux mapsParcourir les tablesTables de formes mixtesLire une grilleConstruire une grilletable.unpackRécapitulatif : tableaux et mapsEntraînez-vous par vous-même : Compilateur Luau en ligne