Skip to content

DistributiveOmit ​

유니온의 각 멤버에서 지정한 키를 제거하고 나머지 속성을 유지해요.

typescript
type WithoutKeys = DistributiveOmit<T, K>;

사용법 ​

DistributiveOmit<T, K> ​

유니온에서 속성을 제거하면서 각 멤버에만 있는 속성을 유지하고 싶을 때 사용해요. 기본 Omit은 모든 멤버에 공통으로 있는 키만 유지하지만, DistributiveOmit은 각 멤버에서 개별적으로 키를 제거해요.

typescript
import type { DistributiveOmit } from 'es-toolkit/types';

type Card = { kind: 'card'; cardNo: string; note: string };
type Bank = { kind: 'bank'; accountNo: string; note: string };

type Payment = DistributiveOmit<Card | Bank, 'note'>;
// => { kind: 'card'; cardNo: string } | { kind: 'bank'; accountNo: string }

type BuiltInPayment = Omit<Card | Bank, 'note'>;
// => { kind: 'card' | 'bank' }

type WithoutCardNo = DistributiveOmit<Card | Bank, 'note' | 'cardNo'>;
// => { kind: 'card' } | { kind: 'bank'; accountNo: string }

멤버에 존재하지 않는 키는 무시해요. 나머지 속성의 readonly와 선택적 속성 표시는 유지해요. T가 never이면 never를 반환하고, K가 never이면 아무 키도 제거하지 않아요.

타입 파라미터 ​

  • T: 속성을 제거할 타입이에요. 유니온은 멤버별로 처리해요.
  • K: 제거할 키예요. 여러 키를 유니온으로 지정할 수 있고, 일부 멤버에만 존재하는 키도 지정할 수 있어요. 기본 Omit과 마찬가지로 PropertyKey (string | number | symbol)에 할당할 수 있는 타입이어야 해요.

MIT 라이선스에 따라 배포됩니다.