Menu
CoddyTech

Propriétés optionnelles

Fait partie de la section Introduction à Luau du Journey Lua de Coddy. Leçon 41 sur 80.

Tous les champs ne sont pas toujours présents. En Lua, un champ manquant dans une table se lit simplement comme nil, ce qui est flexible, mais c’est aussi ainsi que des bugs comme attempt to concatenate a nil value se glissent dans le code.

Luau permet d’indiquer explicitement cette forme : ajoute ? après le type d’un champ pour le marquer comme facultatif :

type User = {
    name: string,   -- obligatoire
    email: string?, -- facultatif : string ou nil
}

local alice: User = {name = "Alice", email = "alice@luau.dev"}
local bob: User = {name = "Bob"} -- ✓ correct, email est facultatif

Tu as déjà vu cela avec les variables : string? est un raccourci pour string | nil. La même idée s’applique maintenant aux champs individuels d’une forme.

Comme un champ facultatif peut être nil, tu dois le vérifier avant de l’utiliser. Le modèle classique de Lua fonctionne, et en mode strict, le vérificateur affine le type dans la branche :

if bob.email then
    print(`email: {bob.email}`) -- ici, email est une chaîne de caractères
else
    print("no email on file")
end

Facultatif signifie « peut être absent ». Cela ne signifie pas « de n’importe quel type ». Si email existe, il doit toujours être une chaîne.

challenge icon

Défi

Facile

Affiche les contacts dont l’adresse e-mail peut être manquante.

  1. Écris type User = {name: string, email: string?}, puis local mia: User = {name = "Mia", email = "mia@coddy.tech"} et local leo: User = {name = "Leo"}.
  2. Écris local function printContact(user: User) pour afficher `{user.name}: {user.email}`, ou `{user.name}: no email` si elle n’est pas renseignée.
  3. Appelle-la pour mia, puis leo.

Appuie sur Exécuter : le résultat affiche Mia: mia@coddy.tech et Leo: no email.

Essayez vous-même

-- 1) définir le type User avec un email facultatif, puis mia et leo
-- 2) définir printContact(user: User) avec une vérification de l’email
-- 3) appeler printContact pour mia, puis leo

Toutes les leçons de Introduction à Luau

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