TypeScript--内置类型2

Omit

描述:Omit 构造一个具有 T 属性的类型,K 类型除外。

type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;

示例

interface Person {
    name: string
    age: number
    gender: 'male' | 'female'
    address: string
}

type PersonOmit = Omit<Person, 'age' | 'address'>

// ✅正确
const p1: PersonOmit = {
    name: 'Tom',
    gender: 'male',
}

解析:

type PersonOmit = Omit<Person, 'age' | 'address'>

等价于

type PersonOmit = Pick<Person, Exclude<keyof Person, 'age' | 'address'>>

等价于

type PersonOmit = Pick<Person, Exclude<'name' | 'age' | 'gender' | 'address', 'age' | 'address'>>

等价于

type PersonOmit = Pick<Person, ('name' extends 'age' | 'address' ? never : 'name') | ('age' extends 'age' | 'address' ? never : 'age') | ('gender' extends 'age' | 'address' ? never : 'gender') | ('address' extends 'age' | 'address' ? never : 'address')>

等价于

type PersonOmit = Pick<Person, 'name' | never | 'gender' | never>

等价于

type PersonOmit = Pick<Person, 'name'  | 'gender'>

等价于

type PersonOmit = {
    name: string
    gender: 'male' | 'female'
}
posted @ 2021-04-22 11:34  蓦然回首!  阅读(60)  评论(0编辑  收藏  举报