반응형
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 |
Tags
- type challenge
- 프로그래머스 레벨 2
- dp
- 타입 챌린지
- typescript
- Nestjs
- TCP
- 알고리즘
- dfs
- 그래프
- socket
- 타입스크립트
- 문자열
- Node.js
- BFS
- 프로그래머스
- Algorithm
- 소켓
- 레벨 1
- javascript
- 백준
- 쉬운 문제
- HTTP
- 자바스크립트
- Crawling
- 수학
- 크롤링
- ip
- HTTP 완벽 가이드
- 가천대
Archives
- Today
- Total
kakasoo
KebabCase type 본문
반응형
type KebabCase<S extends string, IsFirstLetter extends boolean = true> = S extends '' ?
'' : // S가 빈문자일 경우에는 빈문자를 리턴한다.
S extends `${infer F}${infer S}` ?
F extends Uppercase<F> ? // 타입 F의 대문자 형태가 이미 F와 동일하다면, 알파벳이 아니거나 대문자 알파벳이다.
Uppercase<F> extends Lowercase<F> ? // 만약 타입 F의 소문자와 대문자가 일치한다면 알파벳이 아니기에
`${F}${KebabCase<S,false>}`: // F는 그대로, 뒷부분은 다시 케밥케이스를 재귀적으로 호출한다.
IsFirstLetter extends true ? // 만약 기호가 아닐 경우에는, 문자열의 첫번째 글자인지 아닌지에 따라
`${Lowercase<F>}${KebabCase<S, false>}` : // 대문자를 소문자로 변경하고 재귀적 호출 혹은
`-${Lowercase<F>}${KebabCase<S, false>}` : // 대문자를 소문자로 변경 후 앞에 마이너스 기호를 추가, 그리고 재귀적 호출을 하고,
`${F}${KebabCase<S, false>}` : // 원래부터 소문자일 경우에는 재귀적 호출만을 한다.
never; // 그 외 경우에는 never
케밥 케이스를 너무 오랜만에 봐서 이러한 컨벤션이 있다는 걸 잊고 살았다.
코드 박스 우측에 주석을 달았으니 모바일인 사람은 좌우 스크롤을 하자
반응형
'프로그래밍 > TypeScript' 카테고리의 다른 글
AnyOf, 요소 중 하나라도 Truthy한 값이 있는지 검사하기 (0) | 2023.04.02 |
---|---|
객체의 프로퍼티 타입이 never인 것 지우기 & 두 객체 프로퍼티 비교 (0) | 2023.04.02 |
Merge, 두 객체 합병하기 (0) | 2023.04.02 |
Math Types(1) - 타입으로 사칙연산하기 (2) | 2023.04.02 |
StringToUnion (0) | 2023.04.01 |