00010-medium-tuple-to-union

Back

type TupleToUnion<T extends Array<any>> = T[number];

Solution by nupthale #33578

type TupleToUnion<T> = T[any]

Solution by Kolufs #33538

// 你的答案
type TupleToUnion<T extends any[]> = T[number];

Solution by 2531800823 #33248

type TupleToUnion<T extends any[]> = T extends (infer Q)[] ? Q :never;

Solution by RanungPark #33106

// 你的答案
type TupleToUnion<T extends any[]> = keyof {
  [K in T[number]]: K
}

Solution by DwayneDuanJY #33073

// 通过数组下标直接返回数组里面交叉联合类型

type TupleToUnion<T extends Array<any>> = T[number]

Solution by Mohaiyo #32958

// 你的答案
type TupleToUnion<T extends any[]> = T extends [infer F,...infer O] ? F | TupleToUnion<O> : never 

Solution by walker-hzx #32933

/**
 * T extends unknown[]:这个约束确保 T 是一个数组类型,且数组元素的类型可以是任意类型(unknown)。

* T[number]:T[number] 表达式表示类型 T 中元素的联合类型。
* 这是因为 T 是一个数组类型,number 是该数组的索引类型,T[number] 表示可以取到 T 中所有可能的值。
 */
type TupleToUnion<T extends unknown[]> = T[number];

Solution by CAN1177 #32856

// 解答をここに記入
type TupleToUnion<T extends readonly any[]> = T[number];

Solution by Yasunori-aloha #32812

type TupleToUnion<T extends any[]> = T[number];

Solution by ZhipengYang0605 #32797

type TupleToUnion<T> = T extends [...args: (infer S)[]] ? S : never;

Solution by malyanoff #32778

type TupleToUnion<Tuple extends readonly any[]> = Tuple extends [
  infer Head,
  ...infer Rest
]
  ? Head | TupleToUnion<Rest>
  : never;

Solution by MoefulYe #32740


type TupleToUnion<T extends readonly any[]> = T[number]

Solution by bananana0118 #32732

type TupleToUnion<T extends unknown[]> = T[number]

Solution by ZhulinskiiDanil #32669

type TupleToUnion<T> = T extends any[] ? T[number] : never;

Solution by mistkafka #32638

type TupleToUnion<T extends readonly any[]> = T[number]

Solution by xachary #32559

type TupleToUnion<T extends unknown[]> = T extends [infer H, ...infer R]
  ? H | TupleToUnion<R>
  : T extends []
    ? never
    : T

Solution by keyurparalkar #32479

type TupleToUnion<T extends any[]> = T[number]

Solution by zhengpq #32452

// your answers

type Arr = ['1', '2', '3']

type Test = TupleToUnion<Arr> // expected to be '1' | '2' | '3'

type Test2 = TupleToUnion2<[23, '23']>

type TupleToUnion<T extends any[]> = T[number]

type TupleToUnion2<T> = T extends (infer Items)[] ? Items : never


Solution by laqudee #32334

type TupleToUnion<T> = T extends unknown[] 
  ? T[number]
  : never;

Solution by dev-hobin #32219

type TupleToUnion<T extends readonly any[]> = T extends [infer F, ...infer R] ? F | TupleToUnion<R> : never

We take the first element of the array T and union it to the rest of the elements once their type was recursively extracted

Another solution, cleaner that previous one is the next:

type TupleToUnion<T extends readonly any[]> = T[number]

Solution by joyanedel #32140

// your answers
Solution 1:
type TupleToUnion<T> = T extends Array<infer Item> ? Item : never
Solution 2:
type TupleToUnion<T> = T extends Array<any> ? T[number] : never

Solution by trinhvinhtruong96 #32033

En..., a little complicated, but it works.

type Valueof<T> = T[keyof T];

type TupleToUnion<U extends Array<any>> = Valueof<{
  [K in keyof U as K extends number ? K : never]: U[K];
}>;

Solution by jiangyuan #32016

type TupleToUnion<T extends unknown[]> = T extends [infer U, ...infer R] ? U | TupleToUnion<R> : never

Solution by tototi5997 #31957

// 方法1
type TupleToUnion<T> = T extends [infer R, ...infer U] ? R | TupleToUnion<U> : never

// 方法2

type TupleToUnion<T> = T[number]

Solution by LuckyMan199710 #31915

Use de-structuring to get types recursively get types for each element inside tuple

type TupleToUnion<T> = T extends [infer a, ...infer b] ? a | TupleToUnion<b> : never;

Solution by RAY-EZ #31885

// 解答をここに記入
type TupleToUnion<T extends any[]> = T[number]

Solution by pea-sys #31848

type Arr = ['1', '2', '3']

type Test = TupleToUnion<Arr> // expected to be '1' | '2' | '3'

type TupleToUnion<T extends string[]> = T[number]

Solution by anovicenko74 #31757

type TupleToUnion<T> = T extends (infer U)[] ? U: never

Solution by chaosspace #31713

// 你的答案

Solution by chaosspace #31696