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

[Type Challenge] Absolute

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

 

  • infer keyword를 사용할 줄 아는가?
    • infer keyword는 어떤 조건문에서 true일때 type을 유추하게 해주는 키워드이다. (예시를 봐야 와닿는다.)
    • 타입을 직접 명시하지 않아도 되므로 편리하다.
  • template literal type을 이용할 줄 아는가?
    • type을 string type으로 변환하게 해준다.
    • 들어오는 타입의 생김새를 지정해줄 수 있다.

 

내가 생각한 풀이 방법

  • string, number or bigint를 받아서 양수로 바꾼다.
  • 삼항 연산자로 어떻게 해보는건?
  • 'T extends number ? Math['abs'](T) : T' 이런 방법은 안되네..
    • 감이 잘 오지 않았다. TS Docs를 찾아보면서 template literal, infer를 봤지만, 쉽게 눈에 들어오지 않았다.

 

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

  • number를 어떻게 string으로 바꾸지?
    • template literal을 이용했으면 되는구나..
  • T를 string으로 바꾸고 '-' 가 있으면 '-'를 제외한 값만 타입으로 반환시킨다.
    • -를 있는지는 어떻게 체크하고, 그 부분만 타입으로 어떻게 추출하는데?
    • template literal과 infer keyword를 이용한다.

해답

  • infer N을 하면 N에 해당하는 부분이 삼항 연산자가 true일 경우에 자동으로 추론 된다.
    • -5 일 경우에 '5'라는 string literal type으로 유추가 된다. (값이 아니고 타입이다)
  • `${T}`가 아닌 T로 할 경우 T가 int, bigint일때 대응할 수 없다. 따라서 string 형태로 변환 해 주는것이다.

 

Reference

 

Medium 난이도를 풀기 시작했는데, docs에서 이걸 언제써? 라는 내용들이 나오기 시작하는것 같습니다.

그래도 못풀면 뭐라도 배우는거니까 다행이라고 생각해야겠습니다.

 

고통을 긍정적으로 받아들입시다! 화이팅!!

 

 

728x90
반응형

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

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