Avatar ·

Détermination du type d'objet lors de la création d'un littéral en TypeScript

Bonjour à tous ! J'ai commencé à étudier TypeScript récemment et j'ai rencontré un problème qui me semble étrange. Lorsque je crée un objet avec un littéral, je veux spécifier explicitement son type, mais je ne comprends pas comment le faire correctement. Voici un exemple : j'ai une interface `User`, et je veux créer un objet `user` avec ce type. J'ai essayé plusieurs façons, mais je ne suis pas sûr de laquelle est correcte et quelle est la différence. ```typescript interface User { name: string; age: number; } // Méthode 1 : annotation de type après la déclaration const user1: User = { name: 'Alexei', age: 30 }; // Méthode 2 : cast de type const user2 = { name: 'Maria', age: 25 } as User; // Méthode 3 : sans type const user3 = { name: 'Ivan', age: 35 }; ``` Questions : 1. Quelle est la différence entre ces approches ? 2. Laquelle est préférable ? 3. Pourquoi TypeScript permet-il parfois d'ajouter des propriétés supplémentaires, et parfois non ? Ce qui me trouble particulièrement, c'est la situation où je veux passer un objet à une fonction, ce