Partial<Type>
可将一个类型中所有属性转换为可选属性。假设我们有一个 user
的类型,如下:
type User = {
name: string;
age: number;
gender: string;
};
经 Partial<Type>
转换后得到:
type PartialUser = Partial<User>;
const partialUser: PartialUser = {
/** `name` 属性是可选的 */
name: "Olive",
/** `age` 属性是可选的 */
age: 18,
/** `gender` 属性是可选的 */
gender: "female",
};
转换后的 PartialUser
类型与下面的类型是等价的:
type PartialUser = {
name?: string | undefined;
age?: number | undefined;
gender?: string | undefined;
};
那么 Partial<Type>
是如何转换类型的呢?下面是它的源码:
/**
* Make all properties in T optional
*/
type Partial<T> = {
[P in keyof T]?: T[P];
};
- 遍历类型
T
,将类型T
中的属性作为 key; - 在属性后面加
?
使其变为可选的属性; - 可选属性的值为
T
类型中对应属性的值,即T[P]
。