#108Medium

Trim

Implement `Trim<T>` which takes an exact string type and returns a new string with the whitespace from both ends removed. Master TypeScript template literal types in this medium-level challenge on TypeScriptPro.

In this medium-level challenge, you'll implement Trim<T> which takes an exact string type and returns a new string with the whitespace from both ends removed.

Challenge Instructions: Trim

Medium

Implement Trim<T> which takes an exact string type and returns a new string with the whitespace from both ends removed.

For example

[object Object]

Change the following code to make the test cases pass (no type check errors).

ChallengeSolution
// Video Solution: https://youtube.com/watch?v=fALHOdurTDM

/* _____________ Your Code Here _____________ */

type Trim<S extends string> = any

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '../helpers'

type cases = [
  Expect<Equal<Trim<'str'>, 'str'>>,
  Expect<Equal<Trim<' str'>, 'str'>>,
  Expect<Equal<Trim<'     str'>, 'str'>>,
  Expect<Equal<Trim<'str   '>, 'str'>>,
  Expect<Equal<Trim<'     str     '>, 'str'>>,
  Expect<Equal<Trim<'   \n\t foo bar \t'>, 'foo bar'>>,
  Expect<Equal<Trim<''>, ''>>,
  Expect<Equal<Trim<' \n\t '>, ''>>,
]

Pro Challenge

Unlock 102+ medium, hard, and extreme challenges to master advanced TypeScript.

One-time payment. Lifetime access.

Video Walkthrough

Detailed Explanation

type Whitespace = ' ' | '\n' | '\t'
 
type Trim<S extends string> = S extends `${Whitespace}${infer After}`
  ? Trim<After>
  : S extends `${infer Before}${Whitespace}`
    ? Trim<Before>
    : S

How it works:

This challenge helps you understand TypeScript's template literal types and how to apply this concept in real-world scenarios.

This challenge is originally from here.

Share this challenge

Learn the Concepts