この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - TypeScript タイプパズル
56. implement Abs<N>
type Abs<N extends number> = /* your code here */;// Example usage:type AbsFive = Abs<-5>; // expected to be "5"
解答例:
type Abs<N extends number> = `${N}` extends `-${infer R}` ? R : `${N}`;// Example usage:type AbsFive = Abs<-5>; // expected to be "5"
Explanation:
- 我々はまず、型パラメーター 'N' が負数(-)であるかどうかを確認するために、伸張可能文字列リテラル型を使用して数字を文字列に変換します。
- 「
${N}
」は、 'N'を文字列に変換するために使用されます。 - 次に、文字列のパターン '—数字' に一致するように正規表現相当の
<infer R>
を使用して文字列を分解して必要な値を取得します。 - 一致した場合、 'N'の絶対値を取得するために変数 'R'だけを返します。
- 一致しない場合、すべての桁が数字であるため、そのまま 'N'を返します。