この解答例はChatGPTによって生成されています,正しいかは自己判断で。

BFE.devでのAI解答例 - TypeScript タイプパズル
53. Implement SnakeCase<S>

解答例:

type SnakeCase<S extends string> = S extends `${infer T}${infer U}` 
  ? U extends Uncapitalize<U> 
    ? `${Lowercase<T>}_${SnakeCase<U>}` 
    : `${T}${SnakeCase<U>}` 
  : S

説明:

  • S extends ${infer T}${infer U}`` は、文字列をTとUの2つの部分文字列に分割します。
  • U extends Uncapitalize<U> は、Uが小文字で始まる単語であるかどうかをチェックします。
  • Uが小文字で始まる場合、Lowercase<T>は現在の文字列の最初の文字を小文字に変換し、_を追加します。SnakeCase<U>は残りの部分文字列を処理して、snake_caseに変換します。
  • Uが小文字で始まらない場合、Tを維持して、SnakeCase<U> は残りの部分文字列を処理して、snake_caseに変換します。
  • これを再帰的に行い、文字列が終了すると元の文字列を返します。