Extension de structures
Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 43 sur 80.
Les formes apparentées partagent souvent des champs. Chaque Admin est aussi un User ; copier les champs partagés dans les deux déclarations risque de les faire diverger.
Tu as découvert l’opérateur d’intersection & en combinant des alias. Il fonctionne exactement de la même façon pour les formes. A & B signifie « possède tout ce qui vient de A et tout ce qui vient de B » :
type User = {name: string, age: number}
type Admin = User & {level: number}
-- Admin nécessite désormais : name, age ET level
local root: Admin = {name = "Root", age = 35, level = 9}Alors que TypeScript a besoin du mot-clé extends pour les interfaces, Luau n’a besoin de rien de nouveau : les intersections font déjà l’affaire. Tu peux en chaîner plusieurs :
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}Ne confonds pas & avec | : une union A | B correspond à l’une ou l’autre des formes, tandis qu’une intersection A & B doit satisfaire les deux à la fois. Et comme Admin possède tous les champs de User, une valeur Admin peut être passée partout où un User est attendu.
Défi
FacileÉtends un type d’employé pour en faire un type de responsable.
- Écris
type Employee = {name: string, department: string}ettype Manager = Employee & {teamSize: number}. - Crée
local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}. - Affiche
`{teamLead.name} manages {teamLead.teamSize} people`, puisteamLead.department.
Appuie sur Run Code : la sortie affiche Alice Johnson manages 8 people et Engineering.
Essayez vous-même
-- 1) définissez le type Employee, puis le type Manager = Employee & {...}
-- 2) déclarez local teamLead: Manager = {...}
-- 3) affichez la ligne récapitulative, puis le département
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