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를 이용한다.
해답
![](https://blog.kakaocdn.net/dn/bGj7vW/btr7xVxbqXG/kHALTZEXRorKNTkcCQeLG0/img.png)
- infer N을 하면 N에 해당하는 부분이 삼항 연산자가 true일 경우에 자동으로 추론 된다.
- -5 일 경우에 '5'라는 string literal type으로 유추가 된다. (값이 아니고 타입이다)
- `${T}`가 아닌 T로 할 경우 T가 int, bigint일때 대응할 수 없다. 따라서 string 형태로 변환 해 주는것이다.
Reference
- https://www.typescriptlang.org/docs/handbook/2/template-literal-types.html
- https://www.typescriptlang.org/docs/handbook/2/conditional-types.html#inferring-within-conditional-types
Medium 난이도를 풀기 시작했는데, docs에서 이걸 언제써? 라는 내용들이 나오기 시작하는것 같습니다.
그래도 못풀면 뭐라도 배우는거니까 다행이라고 생각해야겠습니다.
고통을 긍정적으로 받아들입시다! 화이팅!!
![](https://blog.kakaocdn.net/dn/zlIje/btr7hu8vfRs/5TctOAaBwOxWpzfUnkjSy1/img.png)
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 |