この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - TypeScript タイプパズル
54. Implement CamelCase<S>
解答例:
type CamelCase<S extends string> = S extends `${infer T}_${infer U}` ? `${Capitalize<T>}${CamelCase<U>}` : S;type A = CamelCase<'big_front_end'> // BigFrontEnd
説明:
この問題では、スネークケースで書かれた文字列をキャメルケースに変換する必要があります。
一般的なアプローチは、文字列を _
で分割し、それぞれの語を最初の文字を大文字に変換し、再度結合することです。その実装は以下のようになります:
type CamelCase<S extends string> = S extends `${infer T}_${infer U}` // 文字列を '_' で分割する ? `${Capitalize<T>}${CamelCase<U>}` // 最初の文字を大文字にして再帰的に変換する : S; // 文字列が1つしかない場合は変換しない
ここで使用された Capitalize
は、文字列の最初の文字を大文字に変換するために使用される、TypeScriptのビルトイン関数です。