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şaretler
  • Partial<Pick<T, Exclude<keyof T, K>>> , K özelliği dışında T'nin tüm özellikleriyle yeni bir tür oluşturur.
  • & türü, 'den Required<...> gelen tüm isteğe bağlı özelliklerle birlikte yalnızca bir gerekli özelliğiyle birleştiren şeydir Partial<...>.
  • [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]