Avatar ·

TypeScript : comment définir correctement le type d'un objet lors de sa création (littéral) ?

Bonjour à tous ! Je viens de commencer à apprendre TypeScript et j'ai rencontré une situation confuse. Lorsque je crée un objet via un littéral (accolades), je veux spécifier explicitement son type pour que TypeScript vérifie que tous les champs sont présents et du bon type. Voici ce que je fais : ```typescript interface User { name: string; age: number; } // J'essaie de spécifier le type lors de la création de l'objet const user: User = { name: "Anna", age: 25, // Supposons que j'ai accidentellement ajouté un champ supplémentaire role: "admin" }; ``` Je m'attendais à ce que TypeScript génère une erreur sur `role`, car il n'est pas dans l'interface `User`. Mais parfois, il reste silencieux ou se comporte étrangement. De plus, j'ai vu qu'on pouvait utiliser `as User` ou `const user = { name: "Anna", age: 25 } satisfies User`. Quelle méthode est correcte ? Quelle est la différence ? Et comment forcer TypeScript à vérifier strictement que l'objet n'a pas de champs supplémentaires ? Merci d'avance pour votre aide ! <<>>

Pourquoi la confusion survient et comment fonctionnent les différentes approches

Vous avez rencontré un clas