你真的懂TS嘛?

149 阅读1分钟

你不知道TS高级类型

Partial 在TS中的使用及含义

  • Partial(部分的,不完全的),在ts中是让一个定义中的所有属性都变成可选的参数
// 定义一个接口
interface Person {
    name:string
    age:number
}
const person1:person = {} // 这样会报错
const person2:Partial<Person> = {}
const person2:Partial<Person> = { name:'xiaohu' }
const person2:Partial<Person> = { height:1.88 } // 报错“height”不在类型Partial<Person>中

key of 在TS中的使用及含义

  • key of 就是将一个联合类型的属性名全部提取出来当做联合类型
interface Person {
    name: string
    age: number
}
type PersonKeys = keyof Person // 等同于 type PersonKeys = 'name' | 'age'

Pick 在TS中的使用及含义

  • pick(选择)在ts中可以选择一个原来接口中一部分的属性定义
interface Person {
    name:string
    age:number
}
type SomePerson = Pick<Person, 'name'> === type SomePerson = { name:string }
type SomePerson = Pick<Person, 'name' | 'age'> === type SomePerson = { name: string;age: number }

Exclude 在TS中的使用及含义

  • exclude(排除)在ts中可以排除 联合类型中的一部分内容
  • 注意exclude是操作联合类型的
type MyTypes = 'name' | 'age' | 'height'
type someMyTypes = Exclude<MyTypes, 'name'>
const myTypes1: someMyTypes = 'age'
const myTypes1: someMyTypes = 'name' // 报错不能将'name'分配给类型"age" | "height"

Omit 在TS中的使用及含义

  • omit(省略)在ts中就是将接口或者类型的键值对删除一部分
interface Person {
    name:string
    age:number
}
type somePerson = Omit<Person, 'name'> === 
type somePerson = {
    age:number
}