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