더북(TheBook)

처음부터 Str extends ``x${infer Rest}x``를 하면 좌우를 동시에 지울 수 있지 않을까요? 좋은 생각이지만 이 경우는 xxtestxx일 때만 동작합니다. 'xxtest''testxx'와 같이 한쪽에만 x가 있는 경우에는 지워지지 않습니다. 어떤 타입을 만든 뒤에는 여러 테스트 사례를 생각해서 어떠한 경우에도 다 돌아가도록 만들어야 합니다.

양쪽 공백을 지우는 함수는 RemoveX를 응용하여 다음과 같이 만들면 됩니다.

type RemoveEmpty<Str> = Str extends ` ${infer Rest}` 
  ? RemoveEmpty<Rest> 
  : Str extends `${infer Rest} ` ? RemoveEmpty<Rest> : Str;
type Removed = RemoveEmpty<'  test  '>
// type Removed = "test"
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.