다음을 통해 공유


RequireAtLeastOne type

RequireAtLeastOne은 인터페이스의 속성 중 하나 이상(모든 속성일 수 있음)이 있어야 하는 형식을 만드는 데 도움이 됩니다.

이는 TypeScript의 유틸리티 유형 https://www.typescriptlang.org/docs/handbook/utility-types.html 으로 인해 작동합니다. 살펴보겠습니다.

  • [K in keyof T]-? 이 속성(K)은 T의 속성과 이름이 같은 경우에만 유효합니다.
  • Required<Pick<T, K>> 는 반복에서 현재 속성만 사용하여 T에서 새 형식을 만들고 필요에 따라 표시합니다.
  • Partial<Pick<T, Exclude<keyof T, K>>> 는 속성 K를 제외하고 T의 모든 속성을 사용하여 새 형식을 만듭니다.
  • &는 의 모든 선택적 Partial<...>속성과 에서 Required<...> 하나의 필수 속성만 사용하여 형식을 결합하는 것입니다.
  • [keyof T] 는 T의 속성만 허용되도록 합니다.
type RequireAtLeastOne<T> = {
  [K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
}[keyof T]