ghaiklor / type-challenges-solutions

Solutions for the collection of TypeScript type challenges with explanations
https://ghaiklor.github.io/type-challenges-solutions/
Creative Commons Attribution 4.0 International
471 stars 56 forks source link

type-challenges-solutions/en/medium-trunc #347

Open utterances-bot opened 3 weeks ago

utterances-bot commented 3 weeks ago

Trunc

This project is aimed at helping you better understand how the type system works, writing your own utilities, or just having fun with the challenges.

https://ghaiklor.github.io/type-challenges-solutions/en/medium-trunc.html

JanessaTech commented 3 weeks ago

There are 2 cases not passed: Expect<Equal<Trunc<'.3'>, '0'>> and Expect<Equal<Trunc<'-.3'>, '-0'>>

Here is my solution:

type Tr<T extends string> = T extends `${infer rest}${'.'}${any}`
? rest extends '-'
  ? '-0'
  : rest extends ''
    ? '0'
    : rest
: T

type Trunc<T extends number | string> = Tr<`${T}`>