この解答例は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型を返します。