RequireAtLeastOne type
RequireAtLeastOne, bir arabirimin özelliklerinden en az birinin (herhangi bir özellik olabilir) bulunması gereken bir tür oluşturulmasına yardımcı olur.
TypeScript'in yardımcı program türleri nedeniyle bu işe yarar: https://www.typescriptlang.org/docs/handbook/utility-types.html Şimdi inceleyelim:
[K in keyof T]-?
bu özellik (K) yalnızca T'nin herhangi bir özelliğiyle aynı ada sahipse geçerlidir.Required<Pick<T, K>>
, yinelemede yalnızca geçerli özelliğiyle T'den yeni bir tür oluşturur ve gerekli olarak işaretlerPartial<Pick<T, Exclude<keyof T, K>>>
, K özelliği dışında T'nin tüm özellikleriyle yeni bir tür oluşturur.&
türü, 'denRequired<...>
gelen tüm isteğe bağlı özelliklerle birlikte yalnızca bir gerekli özelliğiyle birleştiren şeydirPartial<...>
.[keyof T]
yalnızca T özelliklerine izin verildiğinden emin olur.
type RequireAtLeastOne<T> = {
[K in keyof T]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<keyof T, K>>>
}[keyof T]