多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
>[info] ## Partial -- 将所有属性变为可选 ~~~ // 源码是 type Partial<T> = { [P in keyof T]?: T[P]; }; ~~~ >[danger] ##### 使用 ~~~ type Person = { name: string age: number } // 或者 // interface Person{ // name: string // age: number // } type a = Partial<Person> ~~~ * 效果 ![](https://img.kancloud.cn/20/55/2055623b712f29c5fcb9fe3419016f67_467x166.png) >[danger] ##### 自定义一个处理深层对象属性值 ~~~ 1.上面的只能解决一层,如果想解决深层对象属性值都变成可选可以使用自定义代码如下 type DeepPartial<T> = { [U in keyof T]?: T[U] extends object ? DeepPartial<T[U]> : T[U] }; ~~~ * 使用自己自定义案例 ~~~ type DeepPartial<T> = { [U in keyof T]?: T[U] extends object ? DeepPartial<T[U]> : T[U] } type Person = { name: string age: number contact: { email: string phone: number wechat: string } } const person: DeepPartial<Person> = { name: 'w', age: 1, contact: { email: '111', }, } ~~~