Skip to content

Latest commit

 

History

History
46 lines (37 loc) · 1.01 KB

File metadata and controls

46 lines (37 loc) · 1.01 KB

Home > types-kit > TupleToObject

TupleToObject type

Convert a tuple to an object, it can pass in a tag to modify the key value.

Signature:

export type TupleToObject<
  T,
  N extends
    | 'Uppercase'
    | 'Lowercase'
    | 'Capitalize'
    | 'Uncapitalize'
    | 'default' = 'default',
> = T extends readonly any[]
  ? {
      [P in T[number] as Switch<
        N,
        [
          ['Uppercase', Uppercase<P>],
          ['Lowercase', Lowercase<P>],
          ['Capitalize', Capitalize<P>],
          ['Uncapitalize', Uncapitalize<P>],
          P,
        ]
      >]: P
    }
  : never

References: Switch

Example

// Expect: { a: 'a'; b: 'b' }
type Foo = TupleToObject<['a', 'b']>
// Expect: { A: 'a'; B: 'b' }
type Bar = TupleToObject<['a', 'b'], 'Uppercase'>