✍ 공부/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가 겹쳐있을 수 있어 재귀를 돌려 없애준다
사람들 너무 똑똑한듯..😥💦 나는 언제 잘하나~
반응형