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의 모든 속성을 사용하여 새 형식을 만듭니다. -
&
형식을Required<...>
하나의 필수 속성과Partial<...>
모든 선택적 속성과 결합하는 것입니다. -
[keyof T]
T의 속성만 허용되도록 합니다.
type RequireAtLeastOne<T> = {
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
}[keyof T]