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 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.

challenge icon

Défi

Facile

Cré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 :

  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