TypeScript: wie man den Typ für ein Objekt bei seiner Erstellung (Literal) richtig angibt
Hallo zusammen! Ich habe gerade angefangen, TypeScript zu lernen, und bin auf eine unklare Situation gestoßen. Wenn ich ein Objekt über ein Literal (geschweifte Klammern) erstelle, möchte ich seinen Typ explizit angeben, damit TypeScript überprüft, ob alle Felder vorhanden und vom richtigen Typ sind.
Hier ist, was ich mache:
```typescript
interface User {
name: string;
age: number;
}
// Versuche, den Typ bei der Objekterstellung anzugeben
const user: User = {
name: "Anna",
age: 25,
// Nehmen wir an, ich habe versehentlich ein zusätzliches Feld hinzugefügt
role: "admin"
};
```
Ich habe erwartet, dass TypeScript einen Fehler für `role` ausgibt, da es nicht im Interface `User` vorhanden ist. Aber manchmal schweigt es oder verhält sich seltsam. Außerdem habe ich gesehen, dass man `as User` oder `const user = { name: "Anna", age: 25 } satisfies User` verwenden kann. Welcher Weg ist richtig? Was ist der Unterschied? Und wie bringe ich TypeScript dazu, streng zu überprüfen, dass das Objekt keine zusätzlichen Felder hat? Vielen Dank im Voraus für die Hilfe!
<<>>
Warum Verwirrung entsteht und wie die verschiedenen Ansätze funktionieren
Sie sind auf ein klassisches Problem gestoßen.