✍ 공부/TypeScript

[type-challenges] Trim Left

Po_tta_tt0 2023. 6. 6. 21:36
반응형

 

 

 

0.문제

정확한 문자열 타입이고 시작 부분의 공백이 제거된 새 문자열을 반환하는 TrimLeft<T>를 구현하십시오.

 

 

 

1.설명

/* _____________ 여기에 코드 입력 _____________ */
type Space = ' ' |'\n' | '\t'
type TrimLeft<S extends string> = S extends `${Space}${infer R}` ? TrimLeft<R> : S

type temp = TrimLeft<'     str'>

/* _____________ 테스트 케이스 _____________ */
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'>, ''>>,
]

TypeScript에서 `${}`를 쓸 수 있다는건 아는데.. 너무 엄청나지 않나요...?

- S는 공백(공백 하나 혹은 \n, \t) + 문자열 을 extends하는데, 공백이 여러개거나 \n이나 \t가 겹쳐있을 수 있어 재귀를 돌려 없애준다

 

사람들 너무 똑똑한듯..😥💦 나는 언제 잘하나~

반응형