반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 레벨 1
- 크롤링
- socket
- Nestjs
- typescript
- type challenge
- 쉬운 문제
- dp
- HTTP
- 타입스크립트
- 자바스크립트
- 프로그래머스 레벨 2
- 소켓
- 프로그래머스
- 백준
- javascript
- Crawling
- 알고리즘
- BFS
- Node.js
- TCP
- ip
- 문자열
- HTTP 완벽 가이드
- 수학
- 가천대
- 그래프
- 타입 챌린지
- dfs
- Algorithm
Archives
- Today
- Total
kakasoo
PercentageParser, PlusMinusParser 본문
반응형
type Case0 = ['', '', '']
type Case1 = ['+', '', '']
type Case2 = ['+', '1', '']
type Case3 = ['+', '100', '']
type Case4 = ['+', '100', '%']
type Case5 = ['', '100', '%']
type Case6 = ['-', '100', '%']
type Case7 = ['-', '100', '']
type Case8 = ['-', '1', '']
type Case9 = ['', '', '%']
type Case10 = ['', '1', '']
type Case11 = ['', '100', '']
플러스, 마이너스 부호와 숫자, 그리고 퍼센테이지로 이루어진 문자열을 각각의 의미에 맞게 토크나이저하는 타입을 만들어야 한다.
type PlusMinusParser<T extends string> =
T extends `${infer F}${infer R}` ?
F extends '+' | '-' ?
[F, R] :
['', T] :
['', ''];
type PercentageParser <A extends string> =
PlusMinusParser<A> extends [infer F, infer S] ?
S extends `${infer N}%` ?
[F, N, '%'] :
[F, S, ''] :
PlusMinusParser<A>;
한 번에 작성하면 복잡하기 때문에 일단 플러스 마이너스와 숫자+퍼센테이지, 두 영역으로 나누는 PlusMinusParser를 만들고
그 다음 두 번째 인자에서 퍼센테이지를 분리할 수 있도록 하는 분기를 추가로 작성한 PercentageParser를 만들었다.
반응형
'프로그래밍 > TypeScript' 카테고리의 다른 글
Math Types(2) - 타입으로 나누기, 나머지 연산 구현하기 (0) | 2023.04.09 |
---|---|
Absoulte, 수의 절댓값 구하기 (0) | 2023.04.05 |
IsNever, never인지 아닌지 검사하기 (0) | 2023.04.03 |
AnyOf, 요소 중 하나라도 Truthy한 값이 있는지 검사하기 (0) | 2023.04.02 |
객체의 프로퍼티 타입이 never인 것 지우기 & 두 객체 프로퍼티 비교 (0) | 2023.04.02 |