SelectArray type
Если TFields
имеет значение never, то массив нетипизированных строк В противном случае — узкий Fields[]
тип, который будет использоваться в другом месте потребляемого типа.
type SelectArray<TFields> = [string] extends [TFields]
? readonly TFields[]
: () => (T extends TFields ? true : false) extends () => T extends never
? true
: false
? readonly string[]
: readonly TFields[]