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'
}