在TypeScript中,Omit<T, K>
是一个内置的实用类型(从TypeScript 3.5版本开始提供),用于创建一个新的类型,该类型包含了原始类型T
的所有属性,但排除了指定的键K
。
其定义如下:
type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>;
这个类型的工作原理是首先找出T
的所有键(keyof T
),然后使用Exclude
来排除掉那些与K
相匹配的键。最后通过Pick
取出剩余的键及其对应的类型值。
举例说明:
interface Person {
name: string;
age: number;
location: string;
}
type WithoutLocation = Omit<Person, 'location'>;
// 此时WithoutLocation 类型为:
// {
// name: string;
// age: number;
// }
在这个例子中,WithoutLocation
类型就是从Person
接口中剔除了location
属性后的类型。