# 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];
};
# 知识点
- 同 获取必填属性。
← 57-获取必填属性 89-获取必填属性键值 →