# 4179-实现Flip

# 题目描述

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

# 分析

本题是属性值和属性反转,本质也是遍历对象,通过 as 将属性转为属性值即可。

# 题解

type Flip<T> = {
  [P in keyof T as T[P] extends boolean | number | string
    ? `${T[P]}`
    : never]: P;
};

这里需要注意的是 as 中的判断,如果 T[P] 是 boolean,number, string,就将其转换成 string,因为 ts 要求属性必须是 string | number | symbole,这里偷了个懒,把所有的类型都转成了字符,也能够满足题目的用例

# 知识点

  1. 对象遍历,通过 as 修改属性
Last Updated: 2023/5/16 06:00:28