Skip to content

Instantly share code, notes, and snippets.

@mendes5
Created August 10, 2022 21:35
Show Gist options
  • Select an option

  • Save mendes5/b65b119acf4145d28855d41a1bc1f3a4 to your computer and use it in GitHub Desktop.

Select an option

Save mendes5/b65b119acf4145d28855d41a1bc1f3a4 to your computer and use it in GitHub Desktop.
Subtract one from a number inside a string in typescript
type SubtractOne<T> =
T extends '9' ? '8'
: T extends '8' ? '7'
: T extends '7' ? '6'
: T extends '6' ? '5'
: T extends '5' ? '4'
: T extends '4' ? '3'
: T extends '3' ? '2'
: T extends '2' ? '1'
: T extends '1' ? '0'
: T extends '0' ? '0'
: T extends `9${infer A}` ? `9${SubtractOne<A>}`
: T extends `8${infer A}` ? `8${SubtractOne<A>}`
: T extends `7${infer A}` ? `7${SubtractOne<A>}`
: T extends `6${infer A}` ? `6${SubtractOne<A>}`
: T extends `5${infer A}` ? `5${SubtractOne<A>}`
: T extends `4${infer A}` ? `4${SubtractOne<A>}`
: T extends `3${infer A}` ? `3${SubtractOne<A>}`
: T extends `2${infer A}` ? `2${SubtractOne<A>}`
: T extends `1${infer A}` ? `1${SubtractOne<A>}`
: T extends `0${infer A}` ? `0${SubtractOne<A>}`
: '';
type A = SubtractOne<'1024'>; // '1023'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment