工具类型之Required
Required<T>将类型中的所有属性设置为必选(与Partial相反)
假设现有类型定义中定义了一个宽松的type,但是其他代码想要复用这个类型,但是需要所有属性都需要必选
type RequiredType = {
  name?: string
  age?: number
}
const RequiredCat: RequiredType = {
  age: 2
}
const RequiredDog: RequiredType = {
  name: '汪汪'
}
这个时候改类型定义肯定不合适,可能会影响旧代码,这个时候可以使用Required将类型定义全部设置为必选:
const RequiredTiger: Required<RequiredType> = {
  name: '喵呜'
}
此时编译时会抛出错误:Property 'age' is missing in type '{ name: string; }' but required in type 'Required<RequiredType>'.ts(2741)

其实Required<RequiredType>等同于:
type RequiredType = {
  name: string
  age: number
}