본문 바로가기
WEB/타입 챌린지

[Type Challenge] Capitalize

by IT황구 2023. 4. 9.
728x90
반응형

문제

https://github.com/type-challenges/type-challenges/blob/main/questions/00527-medium-append-to-object/README.md

 

GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge

Collection of TypeScript type challenges with online judge - GitHub - type-challenges/type-challenges: Collection of TypeScript type challenges with online judge

github.com

 

문제 의도 및 개념정리

  • interface를 dictionary 처럼 사용할 수 있는지?
  • string에서 Infer를 쓸 경우 어떻게 작동하는지?

 

내가 생각한 풀이 방법

  • 첫번째 글자만 대문자로 변경한다…
    • 흠.. 10진수로 변경해서 사용할 수 있는가?
    • 정규표현식도 가능한가?
  • 빈 문자인가 확인, 아니면 첫번째 문자만 잡아서 변경.
    • ${S[0]['toUpperCase']${S['slice'][1]}} : never; 이런게 안된다.

 

실행하지 못했던 이유 및 해결 방법​

  • 설마 했는데 진짜 인터페이스를 dictionary 처럼 사용하는 것이다.
    • 정규표현식이나 특정 함수를 사용할 수 없을까? 고민했지만 되지 않았다.
  • string에서 ${infer SFirst}${infer SRest} 를 하면 tuple의 [SFirst, ...SRest] 처럼 작동한다.

 

 

해답

 

Reference

 

레퍼런스는 딱히 존재하지 않습니다. infer는 string이나 array가 똑같이 작동한다는점

  • string도 character의 array라서 당연히 그래야 하지 않나 싶긴 합니다.

 

런타임에 사라지는 interface를 dictionary처럼 사용해서 타입을 추론하고 값을 바꿀 수 있다. 라는 아이디어를 캐치하는게 조금 쉽지 않았다고 생각합니다.

 

문제가 한번에 안풀렸으니 좀 얻어가는게 있는것 같습니다!

 

고통을 긍정적으로!! 화이팅!!

728x90
반응형

'WEB > 타입 챌린지' 카테고리의 다른 글

[Type Challenge] Append to Object  (0) 2023.04.08
[Type Challenge] BEM style string  (0) 2023.04.07
[Type Challenge] Absolute  (0) 2023.04.03
[Type Challenge] Length of Tuple  (0) 2023.04.02
[Type Challenge] Pick  (0) 2023.04.01