Avatar ·

TypeScript-Fehler: "An index signature parameter type cannot be a union type" – wie beheben?

Hallo, Kollegen! Ich bin neu in TypeScript und bin auf einen Fehler gestoßen, den ich nicht verstehe. Es gibt ein Objekt, das Einstellungen für verschiedene Benutzertypen speichert: 'admin' und 'user'. Ich möchte einen Typ erstellen, der sicherstellt, dass die Schlüssel des Objekts nur diese Zeichenfolgen sind und die Werte boolesch sind. Hier ist mein Code: ```typescript type UserRole = 'admin' | 'user'; interface Settings { [key: UserRole]: boolean; // Fehler! } ``` TypeScript gibt aus: "An index signature parameter type cannot be a union type. Consider using a mapped object type instead". Ich dachte, Union-Typen könnten als Schlüssel verwendet werden, aber der Compiler stimmt dem nicht zu. Ich benötige, dass das Objekt nur die Eigenschaften 'admin' und 'user' enthalten kann und dass TypeScript einen Fehler ausgibt, wenn versucht wird, auf einen anderen Schlüssel (z. B. 'guest') zuzugreifen. Wie kann ich das richtig machen? Ich habe gesehen, dass in der Dokumentation mapped types erwähnt werden, aber ich verstehe nicht ganz, wie ich sie in meinem Fall anwenden soll. Ich wäre dankbar für eine verständliche Erklärung mit Beispielen.