问题 #
实现一个类型的 just-flip-object
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'}
解答 #
type Flip<T> = {
[K in keyof T as
T[K] extends string | number | symbol
? T[K]
: T[K] extends boolean
? `${T[K]}` .
: never]: K
}