ts怎么将接口的部分属性改成必选, 其余保持不变

interface Student {
name?: string;
age?: number;
class: number
}
比如要将这个接口的age改成必选, 其余保持不变, 该怎么做呢

阅读 8.1k
3 个回答
interface Student {
  name?: string;
  age?: number;
  class: number
}

type CustomRequired<T, K extends keyof T> = {
  [P in K]-?: T[P];
} & Omit<T, K>

// age变required, 其余不变
type Student2 = CustomRequired<Student, 'age'>
// age, name 变required, 其余不变
type Student3 = CustomRequired<Student, 'age' | 'name'>
interface Student {
  name?: string;
  age: number;
  class: number
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进