この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - TypeScript タイプパズル
17. implement LastChar<T>
解答例:
type LastChar<T extends string> = T extends `${infer _}${infer R}` ? R extends '' ? never : R : never;
説明:
T extends string:ジェネリック型Tがstring型であることを制限する。T extends${infer _}${infer R}``:文字列型Tを_とRという任意の2つの文字列に分割する。ここで_は使用しないが、inferキーワードによって使用することができる。R extends '' ? never : R:Rが空文字列である場合、never型を返し、そうでない場合、Rを返す。これにより、空または間違った型を除外し、最後の文字を抽出できるようになります。
そして、例外的なことに、never型には値がなく、LastChar<''>の場合、該当する最後の文字は存在しないため、never型を返します。