타입 챌린지 108 - Trim

소파의 벨로그·2025년 3월 15일

타입챌린지

목록 보기
24/131

문제 링크

문제

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

내 풀이

type Space=' '|"\n"|'\t'
type Trim<S extends string> = 
  S extends `${Space}${infer LeftTrimmed extends string}`?
    LeftTrimmed extends `${infer RightTrimmed extends string}${Space}`?
      Trim<RightTrimmed>
      :Trim<LeftTrimmed>
  :S extends `${infer RightTrimmed extends string}${Space}`?
      Trim<RightTrimmed>
  :S

다른 사람의 풀이

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

type Trim<S extends string> = S extends `${Space}${infer T}` | `${infer T}${Space}` ? Trim<T> : S;

extends문에서 유니온 타입을 쓸 생각은 차마 못한 것 같다.
아름다운 답이다

참고자료

https://github.com/type-challenges/type-challenges/issues/481

0개의 댓글