Ever had a situation where you needed to swap key-value pairs of an enum in typescript and attempts to type it resulted in ugly Record<string, string>
sort of crutch?
Turns out key remapping that came with v4.1 make it a breeze :)
Suppose we have some rhymes
enum Rhymes {
Money = 'bread and honey',
Phone = 'dog and bone'
}
Key remapping and template literals allow us to write a generic to swap they keys for values:
type FlippedRecord<T> = {
[K in keyof T as `${string & T[K]}`]: K
};
So now we can get some type safety while creating flipped enum maps:
const reversedEnum: FlippedRecord<typeof Rhymes> = {
'bread and honey': 'Money',
'dog and bone': 'Phone'
}
It's boombastic, check it out in playground :)