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