Avatar ·

TypeScript: Wie erstelle ich ein Interface, bei dem genau eine von zwei Eigenschaften erforderlich ist?

Hallo zusammen! Ich schreibe eine TypeScript-Anwendung zur Auftragsverarbeitung. Ich habe ein Interface für einen Benutzer, der entweder registriert (dann hat er `userId`) oder ein Gast (dann hat er `guestToken`) sein kann. Aber das Wichtigste ist, dass der Benutzer genau eines dieser beiden Felder haben muss, nicht beide gleichzeitig und keines von beiden. So habe ich es versucht: ```typescript interface User { name: string; email: string; userId?: number; guestToken?: string; } ``` Das Problem ist, dass TypeScript erlaubt, ein Objekt zu erstellen, bei dem beide Felder fehlen oder beide gleichzeitig vorhanden sind. Zum Beispiel: ```typescript const user1: User = { name: "Anna", email: "a@mail.ru" }; // Weder userId noch guestToken — kein Fehler const user2: User = { name: "Ivan", email: ```