RequireAtLeastOne type
A RequireAtLeastOne segít létrehozni egy olyan típust, amelyben egy interfész (bármely tulajdonság) legalább egy tulajdonságának léteznie kell.
Ez a TypeScript segédprogramtípusai miatt működik: https://www.typescriptlang.org/docs/handbook/utility-types.html Vizsgáljuk meg:
[K in keyof T]-?
ez a tulajdonság (K) csak akkor érvényes, ha a neve megegyezik a T bármely tulajdonságával.Required<Pick<T, K>>
új típust hoz létre a T-ből, csak az aktuális tulajdonsággal az iterációban, és kötelezőként jelöli megPartial<Pick<T, Exclude<keyof T, K>>>
új típust hoz létre a T összes tulajdonságával, kivéve a K tulajdonságot.&
az a típus, amely egyetlen kötelező tulajdonsággalRequired<...>
egyesíti a típust a következő választható tulajdonsággal:Partial<...>
.[keyof T]
biztosítja, hogy csak a T tulajdonságai legyenek engedélyezve.
type RequireAtLeastOne<T> = {
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
}[keyof T]