kakasoo

타입 레벨에서 문자열 Join 구현하기 2 본문

프로그래밍/TypeScript

타입 레벨에서 문자열 Join 구현하기 2

카카수(kakasoo) 2023. 8. 11. 20:28
반응형

https://kscodebase.tistory.com/682

 

타입 레벨에서 문자열 Join 구현하기

type ToString= T extends string ? T : never; type ToStringTuple= T extends string[] ? T : never; type Join = T extends [infer F, ...infer Rest] ? `${ToString}${Join}` : ''; 문자열로 이루어진 배열을 받아 Join하는 타입을 구현했다. type

kscodebase.tistory.com

 

Join의 다른 구현 방법

type Join<
  Target extends string[],
  Separator extends string = ""
> = Target extends [infer First, ...infer Rest]
  ? First extends string
    ? Rest extends string[]
      ? Rest extends []
        ? First
        : `${First}${Separator}${Join<Rest, Separator>}`
      : never
    : never
  : "";

Target으로 문자열 배열을 받아 Separator를 이용해 각 문자열들을 합치는 타입이다.

Target은 반드시 First와 나머지 인자 Rest로 이루어져 있다고 가정할 수 있으며,

Rest가 없는 경우, 즉 더 이번 First가 마지막인 경우에는 Separator 없이 단순히 First를 반환하고,

그렇지 않은 경우에는 `${First}${Separator}${Join<Rest, Separator>` 타입을 리턴한다.

반응형