この解答例は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に変換します。- これを再帰的に行い、文字列が終了すると元の文字列を返します。