jjw

写给自己的博客。 记录学习的点滴以备查。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

TypeScript坑记(一)

Posted on 2025-08-16 22:28  jjw  阅读(6)  评论(0)    收藏  举报
 1 export interface IUser {
 2     age?: number;
 3 }
 4 
 5
 6 type GetRequiredKeys_A<T> = {
 7     [K in keyof T]-?:
 8         T[K] extends Required<T>[K] 
 9             ? K 
10             : never
11 }[keyof T]
12 
13 type GetRequiredKeys_B<T> = {
14     [K in keyof T]:
15         T[K] extends Required<T>[K] 
16             ? K 
17             : never
18 }[keyof T]

age?: number 

作为可选属性,ts默认会加入一个 undefined, 相当于 number | undefined.

type keys = IUser['age'] // type keys = number | undefined
 
[K in keyof T]-?: 去除可行属性是必须的。