この解答例は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のビルトイン関数です。