この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - TypeScript タイプパズル
27. implement Flat<T>
解答例:
type Flat<T extends any[]> = T extends [infer Head, ...infer Tail] ? [...(Head extends any[] ? Flat<Head> : [Head]), ...Flat<Tail>] : [];// テストtype A = Flat<[1,2,3]>; // [1,2,3]type B = Flat<[1,[2,3], [4,[5,[6]]]]>; // [1,2,3,4,5,6]type C = Flat<[]>; // []
解説:
Flat<T>は、Tuple 型Tを平坦化する型を表します。- 入力 Tuple 型
Tを、先頭の要素Headとそれ以外の要素の Tuple 型Tailに分割します。 Headが Tuple 型である場合は再帰的にFlat<Head>を適用します。それ以外の場合は[Head]として配列に変換します。- 配列の結合演算子
...を使って[Head]またはFlat<Head>とFlat<Tail>を連結して新しい Tuple 型を作成します。 Tailの要素がなくなるまで、再帰的にこの演算を繰り返し、最終的に平坦化された Tuple 型を返します。空の Tuple 型の場合は[]を返します。