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];
};
注意到属性后的 -?
了吗?意思是:去除该属性的可选属性,使其转换为必选的属性。