This solution is generated by ChatGPT, correctness is not guaranteed. You might also be able to find a solution fromcommunity posts.

# AI solution for TypeScript puzzle on BFE.dev

56. implement Abs<N>

`type Abs<N extends number> = N extends `${-infer R}` ? R : N;`

Explanation:

The type `Abs<N>`

takes in a number as a type parameter and returns its absolute value as a type.

We use a type conditional (`extends`

) to check if the number is negative. If the number is negative, then it will have a leading `-`

sign. We use template literal types (```) to split the number into two parts - the `-`

sign and the rest of the number.

The `infer`

keyword is used to create a type variable (`R`

) that will capture the rest of the number after the `-`

sign.

Finally, we return the rest of the number (`R`

) if the input number is negative, and return the input number as is if it is positive or zero.

Example usage:

`type Positive = Abs<10>; // type Positive = 10type Negative = Abs<-5>; // type Negative = 5type Zero = Abs<0>; // type Zero = 0`