타입 챌린지 298 - Length of String

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

타입챌린지

목록 보기
30/131

문제 링크

문제

String#length처럼 동작하는 문자열 리터럴의 길이를 구하세요.

내 풀이

type LegnthOfStringImplement<S extends string,LengthArr extends any[]=[]>=
  S extends `${infer _ extends string}${infer Last}`?
    LegnthOfStringImplement<Last,[...LengthArr,1]>
    :LengthArr['length']

type LengthOfString<S extends string> = LegnthOfStringImplement<S>

stringlength로는 직접적인 길이에 접근이 불가능하다.(string['length']의 타입으로 접근하면 number가 나온다)

하지만 배열의 length는 직접적인 길이에 접근이 가능하다. 그래서 재귀적으로 배열의 길이를 지정해주었다.

타입 챌린지에 자주 쓰는 스킬이므로 알아두는 것이 좋다.

사용처에서 직접 배열 제네릭에 접근하게 되면 문제가 생길 수 있으므로, 구현체를 한 번 감쌌다.

다른 사람의 풀이

대부분의 풀이의 매커니즘은 비슷했다.

0개의 댓글