반응형
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
- type challenge
- Crawling
- Nestjs
- dp
- 백준
- 알고리즘
- Algorithm
- 문자열
- TCP
- dfs
- 수학
- 자바스크립트
- ip
- 그래프
- socket
- HTTP
- typescript
- 타입 챌린지
- 프로그래머스
- Node.js
- 레벨 1
- 크롤링
- 프로그래머스 레벨 2
- 가천대
- BFS
- javascript
- HTTP 완벽 가이드
- 타입스크립트
- 소켓
- 쉬운 문제
Archives
- Today
- Total
kakasoo
IsUnion 본문
반응형
type IsPartitionSameEntire<T, P = T> = T extends P ? P extends T ? true : false : false;
type IsUnion<T> = IsPartitionSameEntire<T> extends true ? false : IsPartitionSameEntire<T> extends false ? false : true;
조금 지저분한 풀이긴 하지만, 분산 법칙을 이용해서 푸는 방법이 있다.
Equal 타입을 구현하다가 안 것인데,
type Equal<X, Y> = X extends Y ? (Y extends X ? true : false) : false;
type a5 = Equal<1 | 2, 1>; // boolean
type a6 = Equal<1, 1 | 2>; // boolean
Equal을 다음과 같이 X가 Y일 때 Y도 X인 경우로 구분하게 되면 유니온 타입의 경우에는 boolean으로 추론되는 것을 알았다.
이 때의 경험으로, 나는 유니온이 두 번의 분산법칙을 만나면 두 가지 케이스가 모두 통과하는 경우가 발생하여 true | false, 즉 boolean으로 추론됨을 알았다.
따라서 IsPartionSameEntire는 어떤 타입 T가 분산법칙을 만났을 때 P에 속하면서 P 역시 T에 속하는가, 즉 분산법칙이 발생했는가를 보려고 만든 타입이다.
이 타입의 결과는 당연 true, false 둘 중 하나지만 유니온의 경우에는 boolean이 발생하게 된다.
따라서 IsUnion 타입은 IsPartitonSameEntire 타입의 결과가 boolean으로 추론될 때를 true를 반환하게 하면 된다.
반응형
'프로그래밍 > TypeScript' 카테고리의 다른 글
Reverse, 뒤집혀진 배열을 추론하는 타입 (0) | 2023.04.14 |
---|---|
Shift, 튜플의 첫 요소를 제거한 타입 (0) | 2023.04.13 |
startWith, endWith : ~로 시작하거나 끝나는 문자열 타입 (0) | 2023.04.13 |
Math Types(2) - 타입으로 나누기, 나머지 연산 구현하기 (0) | 2023.04.09 |
Absoulte, 수의 절댓값 구하기 (0) | 2023.04.05 |