跳到主要内容

DeepPartial<T>

type DeepPartial<T> = { [P in keyof T]?: T[P] extends (infer U)[] ? DeepPartial<U>[] : T[P] extends ReadonlyArray<infer UE> ? ReadonlyArray<DeepPartial<UE>> : DeepPartial<T[P]> };

Defined in: types/DeepPartial.ts:46

创建一个类型的深度部分类型 所有属性(包括嵌套对象和数组元素的属性)都变为可选

Type Parameters

Type ParameterDescription
T要创建深度部分类型的原始类型

Examples

// 基本用法
interface User {
name: string;
age: number;
address: {
street: string;
city: string;
};
hobbies: string[];
}

// 深度部分类型
const partialUser: DeepPartial<User> = {
name: 'John',
address: {
street: 'Main St',
},
hobbies: ['reading'],
};
// 嵌套数组
interface Data {
items: {
id: number;
name: string;
}[];
}

const partialData: DeepPartial<Data> = {
items: [{
id: 1,
}],
};

**Note:** 此类型递归地将所有属性变为可选,包括嵌套对象和数组元素
**Note:** 对于数组类型,会递归应用到数组元素的类型
**Note:** 对于只读数组,保持其只读特性的同时递归应用到元素类型