Key-value array field.
Supports both dynamic keys (when keys aren't known ahead of time) and specific keyed values.
type ArrayField<T extends string[] | string = string>
= T extends string[]
? Partial<{ [key in T[number]]: string }> | [] // Keyed array
: { [key: string]: string } | null; // Dynamic array
type DynamicArray = ArrayField;
// Result: Record<string, string | null> | []
type SocialLinks = ArrayField<["twitter", "facebook", "linkedin"]>;
// Result: Record<"twitter" | "facebook" | "linkedin", string> | null