zl程序教程

您现在的位置是:首页 >  前端

当前栏目

[Typescript] “Required” Mapped Type, +/- Modifiers

typescript type required mapped
2023-09-14 08:59:13 时间

For example we have interface:

interface Person {
  name: string,
  age?: number  
}

'age' is an optional prop.

 

// will have an error since person.age is used
function printAge(person) {
  return `${person.name} is ${person.age}`
}

const person = {
    name: "wan'
}

printAge(person)

 

Required type:

type MyRequired<T> = {
    [P inkeyof T]-?: T[P]
}

'-?': remove optional modifier so it become required prop.

function printAge(person: MyRequired<Person>) {
  return `${person.name} is ${person.age}`
}

const person: MyRequired<Person> = {
    name: "wan',
    age: 23
}

printAge(person)

 

 

or can use built-in:

function printAge(person: Required<Person>) {
  return `${person.name} is ${person.age}`
}

const person: Required<Person> = {
    name: "wan',
    age: 23
}

printAge(person)