Flip
Challenge
Implement the type of just-flip-object. Examples:
Flip<{ a: "x"; b: "y"; c: "z" }>; // {x: 'a', y: 'b', z: 'c'}
Flip<{ a: 1; b: 2; c: 3 }>; // {1: 'a', 2: 'b', 3: 'c'}
Flip<{ a: false; b: true }>; // {false: 'a', true: 'b'}
No need to support nested objects and values which cannot be object keys such as arrays
Solution
Zur Lösung dieses Problems erstellen wir einen Mapped Type, bei der wir jeden Schlüssel / jede Eigenschaft mittels as in eine Zeichenkette mit dem Wert der Eigenschaft umwandeln:
type Flip<T extends Record<string, any>> = {
[Key in keyof T as `${T[Key]}`]: Key;
};