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];
T
が『const定義』されているのであれば、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