Skip to content

映射类型

映射类型:根据旧的类型,创建新的类型

tsx
interface TestInterface {
  name: string
  age: number
}

接口属性全部变为 可选

tsx
// 我们可以通过+/-来指定添加还是删除

type OptionalTestInterface<T> = {
  [p in keyof T]+?: T[p]
}

type newTestInterface = OptionalTestInterface<TestInterface>

// type newTestInterface = {
//    name?: string,
//    age?: number
// }

添加只读

tsx
type OptionalTestInterface<T> = {
  +readonly [p in keyof T]+?: T[p]
}

type newTestInterface = OptionalTestInterface<TestInterface>
// type newTestInterface = {
//   readonly name?: string,
//   readonly age?: number
// }