# 58-获取可选属性

# 题目描述

实现高级 util 类型GetOptional<T>,该类型保留所有可选字段

例如

type I = GetOptional<{ foo: number; bar?: string }>; // expected to be { bar?: string }

# 分析

这个题目就是上一题的反义了,只需要在属性值过滤时,取反即可。

# 题解

type GetOptional<T> = {
  // as 不会的建议去 medium 实现 Omit 看看
  [P in keyof T as T[P] extends Required<T>[P]
    ? // 反过来即可
      never
    : P]: T[P];
};

# 知识点

  1. 获取必填属性
Last Updated: 2023/5/16 06:00:28