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