Menu
Coddy logo textTech

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, 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é

Pris isolément, les types à valeur unique sont une curiosité. Combinés à des 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 modifiez le code ; avec un simple string, elle passerait inaperçue et provoquerait une erreur à l’exécution, si vous avez 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 les plus courants, mais les littéraux booléens et (dans les versions plus récentes de Luau) les littéraux numériques fonctionnent de la même manière. Ce modèle, une union de littéraux de chaîne, est également la façon dont Luau remplace les énumérations d’autres langages, comme vous le verrez dans un chapitre ultérieur.

challenge icon

Défi

Facile

Crée trois alias de type d’union littérale :

  • Direction = "north" | "south" | "east" | "west"
  • GameState = "menu" | "playing" | "paused" | "gameover"
  • Difficulty = "easy" | "medium" | "hard"

Déclare, en utilisant les alias :

  • playerDirection: Direction = "north"
  • currentState: GameState = "playing"
  • selectedDifficulty: Difficulty = "medium"

Crée une fonction movePlayer(direction: Direction): string qui renvoie "Moving [direction]", ainsi qu’une fonction updateGameState(state: GameState): string qui renvoie "Game state: [state]".

Affiche, chacune sur sa propre ligne :

  1. movePlayer(playerDirection)
  2. updateGameState(currentState)
  3. 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
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur Lua en ligne