19、重学TS-第十九题

64 阅读1分钟

实现一个 OptionalKeys 工具类型,用来获取对象类型中声明的可选属性。具体的使用示例如下所示:

type Person = {
  id: string;
  name: string;
  age: number;
  from?: string;
  speak?: string;
};

type OptionalKeys<T> = // 你的实现代码
type PersonOptionalKeys = OptionalKeys<Person> // "from" | "speak"

答案:

type OptionalKeys<T, K = keyof T> = K extends keyof T
? undefined extends T[K] 
    ? K 
    : never 
: never

终点在于 K = keyof T,从20题得到的解题思路。