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]