面试题答案
一键面试实现思路
- 首先,我们要根据第三个布尔类型参数来决定如何处理提取的属性。
- 如果第三个参数为
true
,我们需要对提取的属性值应用NonNullable
类型。 - 如果第三个参数为
false
,我们直接按照内置Pick
类型的行为进行操作。 - 我们可以使用条件类型来根据布尔值进行不同的处理。
完整的TypeScript代码
type MyPick<T, K extends keyof T, B extends boolean> = B extends true
? {
[P in K]: NonNullable<T[P]>;
}
: {
[P in K]: T[P];
};