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]

Playground Link

Last modification:August 15, 2024
如果觉得我的文章对你有用,请随意赞赏