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

interface Utilisateur {
  id: number;
  nom: string;
  email?: string;
}

function formater(u: Utilisateur): string {
  return u.email ? `#${u.id} ${u.nom} ${u.email}` : `#${u.id} ${u.nom}`;
}

const u1: Utilisateur = { id: 1, nom: "Alice", email: "alice@example.com" };
const u2: Utilisateur = { id: 2, nom: "Bob" };

console.log(formater(u1));
console.log(formater(u2));
#1 Alice alice@example.com
#2 Bob
Espace solution

Proposer une solution

Connectez-vous ou créez un compte pour envoyer votre code (aucune exécution côté serveur — on stocke juste le texte pour la communauté).

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