共用方式為


SelectArray type

如果 TFields 永遠不是,則為不具類型的字串數位,否則為取用型別中其他地方所要使用的縮小 Fields[] 型別。

type SelectArray<TFields> = [string] extends [TFields]
  ? readonly TFields[]
  : () => (T extends TFields ? true : false) extends () => T extends never
      ? true
      : false
      ? readonly string[]
      : readonly TFields[]