00106-medium-trimleft

Back

type Space = ' ' | '\n' | '\t';
type TrimLeft<S extends string> = S extends `${Space}${infer R}` ? TrimLeft<R> : S;

/* _____________ Test Cases _____________ */
import type { Equal, Expect } from '@type-challenges/utils'

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

Solution by AnastasiaSv #37444

T extends ` ${infer R}` ? TrimLeft<R> : T

Solution by Divcutu #37386

type Space = ' ' | '\n' | '\t';
type TrimLeft<S extends string> = S extends `${Space}${infer U}` ? TrimLeft<U> : S;
  1. 递归去除左侧空白
  2. infer U 声明剩余未处理字符串

Solution by djdidi #37152

type TrimLeft<S extends string> = S extends `${infer F}${infer R}` ? F extends ' ' | '\n' | '\t' ? TrimLeft<R> : S : S

Solution by 359Steve #37051

// your answers

type SpecialChar = "\n" | "\t" | "\r" | " ";

type TrimLeft<S extends string> = S extends `${infer First}${infer Rest}`
  ?
  First extends SpecialChar ? TrimLeft<Rest> : S
  : ''

Solution by thavguard #36953

// your answers
type SeparateSymbol = ' ' | '\n' | '\t';
type TrimLeft<S extends string> = S extends `${SeparateSymbol}${infer Last}` ? TrimLeft<Last> : S;

Solution by AlexBraunMagic #36901

type Space = ' ' | '\n' | '\t'

type TrimLeft<S extends string> = S extends `${Space}${infer W}` ? TrimLeft<W> : S

Solution by tungulin #36732

// 你的答案

type Space = ' ' | '\n' | '\t' type TrimLeft = S extends ${Space}${infer R}? TrimLeft : S

Solution by zhaohuaishuai #36649

type TrimLeft<S extends string> = S extends `${'\n' | ' ' | '\t'}${infer U}` ? TrimLeft<U> : S

Solution by tungulin #36612

type TrimLeft = S extends ${infer R} | \n${infer R} | \t${infer R} ? TrimLeft : S

Solution by asylbekduldiev #36508

type Space = ' ' | '\t' | '\n';
type TrimLeft<S extends string> = S extends `${Space}${infer P}` ? TrimLeft<P> : S

Solution by tac-tac-go #36000

type TrimLeft<S extends string> = S extends `${' '| '\n' | '\t'}${infer I}` ? TrimLeft<I> : S

Solution by EvilEl #35843

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer Rest}` ? TrimLeft<Rest> : S;

Solution by gangnamssal #35560

type TrimLeft<S extends string> = S extends `${Empty}${infer V}`? TrimLeft<V> : S

Solution by RanungPark #35509

type Empty = ' '| '\n' | '\t' 

type TrimLeft<S extends string> = S extends `${Empty}${infer V}`? TrimLeft<V> : S

Solution by RanungPark #35480

type TrimLeft<S extends string> = S extends ` ${infer R}` 
  ? TrimLeft<R> 
  : S extends `\n\t${infer R}` 
    ? TrimLeft<R> 
    : S

Solution by eunsukimme #35135

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer R}` ? TrimLeft<R> : S;

Solution by raeyoung-kim #35029

// 여기 풀이를 입력하세요
type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer R}` ? TrimLeft<R> : S;

Solution by LeeKangHyun #34914

We can separate string with literal templates.


type TrimLeft<S extends string> = S extends `${' ' | '\t' | '\n'}${infer R}` ? TrimLeft<R> : S;

Solution by dev-jaemin #34884

// your answers
type TrimLeft<S extends string> = S extends `${" " | "\n" | "\t"}${infer R}`
  ? TrimLeft<R>
  : S;

Solution by zeyuanHong0 #34835

type TrimLeft<T extends string> = T extends `${' ' | '\n' | '\t'}${infer Rest}` ? TrimLeft<Rest> : T;

Solution by semet #34678

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer R}` ? TrimLeft<R> : S

Solution by binhdv155127 #34644

type Space = ' ' | '\n' | '\t'
type TrimLeft<S extends string> = S extends `${Space}${infer R}` ? TrimLeft<R> : S

Solution by devshinthant #34571

// 你的答案

type Space = ' ' | '\n' | '\t' type TrimLeft = S extends ${Space}${infer B} ?TrimLeft:S

Solution by W-fitTiger #34258

type TrimLeft<S extends string> = S extends `${' '|'\n'|'\t'}${infer rest}` ? TrimLeft<rest> : S

Solution by ouzexi #33993

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer U}` ? TrimLeft<U> : S 

Solution by ScriptBloom #33895

type Space = ' ' | '\n\t'
type TrimLeft<T extends string> = T extends `${Space}${infer R}` ? TrimLeft<R> : T

Solution by Danny101201 #33844

type TrimLeft<S extends string> = S extends `${' ' | '\n' | '\t'}${infer Rest}`
  ? TrimLeft<Rest>
  : S

Solution by laplace1009 #33721

type Space = '\t' | '\n' | ' ' 

type TrimLeft<S extends string> = S extends `${Space}${infer word}` ? TrimLeft<word> : S

Solution by loevray #33326

// 你的答案
type WhiteType = ' '|'\n'|'\t'
type TrimLeft<S extends string> = S extends `${WhiteType}${infer O}` ? TrimLeft<O> : S

Solution by walker-hzx #32937