TypeScript Utility Types - Required: TypeScript 实用类型 - Required

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

1
2
3
4
5
type User = {
name: string;
age?: number;
gender: string;
};

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

1
2
3
4
5
6
7
8
type RequiredUser = Required<User>;

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

下面是 Required<Type> 的源码:

1
2
3
4
5
6
/**
* Make all properties in T required
*/
type Required<T> = {
[P in keyof T]-?: T[P];
};

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

Playground Link