Required<Type> 类型与 [Partial<Type>](#Partial-lt-Type-gt) 类型的作用相反,Required<Type> 可将一个类型中的可选属性转换为必选属性。以 User 类型为例:

type User = {
  name: string;
  age?: number;
  gender: string;
};

User 类型中的 age 属性是可选属性,当经过 Required<Type> 转换后,该属性会被转换成必选属性:

type RequiredUser = Required<User>;

const requiredUser: RequiredUser = {
  name: "Olive",
  /** `age` 属性由可选转成了必选 */
  age: 18,
  gender: "female",
};

下面是 Required<Type> 的源码:

/**
 * Make all properties in T required
 */
type Required<T> = {
  [P in keyof T]-?: T[P];
};

注意到属性后的 -? 了吗?意思是:去除该属性的可选属性,使其转换为必选的属性。

Playground Link

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