Types littéraux
Fait partie de la section Introduction à Luau du Journey Lua de Coddy — leçon 33 sur 73.
Les types comme string autorisent n'importe quelle chaîne de caractères — mais parfois seules quelques valeurs exactes ont du sens. Un type littéral utilise la valeur elle-même comme type :
local mode: "dark" = "dark" -- seule la chaîne "dark" est autorisée
local locked: true = true -- seul le booléen true est autoriséSeuls, les types à valeur unique sont une curiosité. Combinés avec les unions, ils deviennent l'un des outils les plus utiles de Luau — un ensemble strictement contrôlé de valeurs autorisées :
type Direction = "north" | "south" | "east" | "west"
type GameState = "menu" | "playing" | "paused" | "gameover"
local move: Direction = "north" -- ✓
local state: GameState = "playing" -- ✓
-- local bad: Direction = "diagonal" -- ✗ erreur de type !Désormais, une faute de frappe comme "nort" ou une valeur invalide comme "diagonal" est détectée pendant que vous éditez — avec un simple string, cela passerait inaperçu et provoquerait une erreur à l'exécution, si vous avez de la chance de vous en rendre compte.
Les types littéraux sont sensibles à la casse et exacts : "North" ne correspond pas à "north". Les littéraux de chaîne sont le cas le plus courant, mais les littéraux booléens et (dans les versions plus récentes de Luau) numériques fonctionnent de la même manière. Ce motif — une union de littéraux de chaîne — est également la façon dont Luau remplace les enums d'autres langages, comme vous le verrez dans un chapitre ultérieur.
Défi
FacileCréez trois alias de type union de littéraux :
Direction="north" | "south" | "east" | "west"GameState="menu" | "playing" | "paused" | "gameover"Difficulty="easy" | "medium" | "hard"
Déclarez, en utilisant les alias :
playerDirection: Direction="north"currentState: GameState="playing"selectedDifficulty: Difficulty="medium"
Créez une fonction movePlayer(direction: Direction): string retournant "Moving [direction]", et une fonction updateGameState(state: GameState): string retournant "Game state: [state]".
Affichez, chacun sur sa propre ligne :
movePlayer(playerDirection)updateGameState(currentState)- la valeur de
selectedDifficulty
Essayez vous-même
-- Écrivez le code ici
-- typer Direction / GameState / Difficulty comme des unions littérales
-- déclarer playerDirection, currentState, selectedDifficulty
-- movePlayer(direction: Direction): string -> "Moving [direction]"
-- updateGameState(state: GameState): string -> "Game state: [state]"
-- afficher les trois résultats
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
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
Typage des paramètres et valeurs de retourTypage des fonctions anonymesFonctions ne retournant rienParamètres optionnelsValeurs par défaut des paramètresFonctions variadiquesDéfinition des types de fonctionsRécapitulatif : Fonctions typées2Types fondamentaux
Types de base : num, str, boolLe type 'any' : la porte de sortieLe type 'unknown'Types Nil et optionnelsL'inférence de type en actionAnnotations explicites de typeRécapitulatif : Pratique des 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ésAjout et lecture d'élémentsQu'est-ce qu'un type Map ?Déclaration et accès aux MapsItération sur les tablesTables à formes mixtesTableaux typés multidimensionnelstable.unpack et VarargsRécapitulatif : Tableaux et Maps