在以下类型定义中,我两次使用OmitB定义中删除了两个属性。
我想知道是否可以只使用一个Omit,但一次可以删除两个或多个属性。

export type A = Readonly<{
  x: number;
  y: number;
  j: string;
  k: string;
}>;

export type B = Omit<A, 'j'> & Omit<A, 'k'>

最佳答案

您只需要将并集用作第二个类型参数,即可从第一个类型参数中删除并集中的所有组成部分:

export type A = Readonly<{
  x: number;
  y: number;
  j: string;
  k: string;
}>;

export type B = Omit<A, 'j' | 'k'>
// Same as
// type B = {
//     readonly x: number;
//     readonly y: number;
// }

play

10-06 00:33