Aller au contenu principal
U/
Types
typescript

Interface Utilisateur avec champs optionnels

Définir une interface TypeScript avec des champs obligatoires et optionnels, puis écrire une fonction de formatage qui gère l'absence de champ.

15 minPublié le 20 mai 2026Proposé par Anonyme

Défi

// Lisez attentivement, codez sur votre machine

Énoncé

Définir l'interface Utilisateur avec les champs id: number, nom: string et email?: string. Écrire la fonction formater(u: Utilisateur): string qui retourne "#<id> <nom> <email>" si l'email est présent, ou "#<id> <nom>" dans le cas contraire. Le compilateur doit garantir que l'accès à email ne peut pas provoquer d'erreur sans vérification préalable.

Contraintes

  • TypeScript ≥ 5.0, mode strict activé.
  • Utiliser une interface (pas un type alias ni une class).
  • La gestion du champ optionnel doit utiliser un narrowing explicite (if (u.email) ou l'opérateur ??).
  • Pas de ! (non-null assertion) sur email.
  • Pas de bibliothèque externe.

Exemple

Pour un utilisateur { id: 1, nom: "Alice", email: "alice@example.com" } puis un utilisateur { id: 2, nom: "Bob" } sans email, sortie attendue :

#1 Alice alice@example.com
#2 Bob

Aucun espace en fin de seconde ligne, et surtout pas d'undefined.

Espace solution
// À garder en tête
  • D'abord, faire marcher

    On ne cherche pas à optimiser : d'abord, on fait marcher le truc. Optimiser vient ensuite — et ça aussi, ça s'apprend. (Si un défi porte sur l'optimisation, son énoncé le précise.)

  • Pas de mauvaise réponse

    Il n'y a pas de mauvaise réponse à un défi. Le but, c'est de le faire. Ce qui compte, c'est de s'entraîner.

  • Trop dur ? Au suivant

    Un défi te résiste ? N'hésite pas à en prendre un autre. Ils seront encore là demain.