Absolute

Challenge

Implement the Absolute type. A type that take string, number or bigint. The output should be a positive number string

For example

type Test = -100;
type Result = Absolute<Test>; // expected to be "100"

Solution

Zur Lösung dieses Problems müssen wir lediglich prüfen, ob die Zahl / String ein Vorzeichen - aufweist. Man kann mittels Template literal types prüfen, ob der Eingabetyp als Zeichenkette ein Minus in seinem template literal typ hat, und falls ja, einfach die mittels infer erzeugte generische Typ-Variable zurückgeben:

type Absolute<T extends number | string | bigint> = `${T}` extends `-${infer U}`
  ? U
  : `${T}`;

References

Inferring Within Conditional Types