단어의 좌,우측 공백을 모두 제거하는 메서드다.
예시에 주어진 공백의 타입은 총 3가지다.
따라서 3가지의 공백을 먼저 선언한다.
type Space = ' ' | '\t' | '\n';
이후 infer
키워드로 단어를 캡쳐링한 뒤 재귀적으로 타입을 먹여준다.
type Trim<S extends string> = S extends `${Space}${infer word}` | `${infer word}${Space}` ? Trim<word> : S
좌, 우측에 Space
타입이 존재한다면 다시 Trim
을 재귀적으로 호출, 아니라면 그대로 문자열을 반환한다.
타입스크립트에서 재귀를 활용할 줄은 꿈에도 몰랐다. 또한 infer
키워드는 자주활용되니 잘 알아두자.
다음에는 타입스크립트에서 타입을 어떻게 추리하는지 등 타입스크립트의 동작원리에 대해 파헤쳐보자!