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