type WithPartial<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>
interface Config {
a: number
b: string
c: number | string
d: boolean
}
type Param = WithPartial<Config, 'a' | 'c'>
// 等价于
type Param = {
a?: number
b: string
c?: number | string
d: boolean
}
该方法由两部分组成:
Omit<T, K>
: 为从T中剔除K属性
Partial<Pick<T, K>> :Pick<T, K>
为从T中选出K属性,由Partial转为可选