반응형
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
- 쉬운 문제
- HTTP 완벽 가이드
- BFS
- 크롤링
- dp
- 프로그래머스 레벨 2
- Nestjs
- javascript
- Crawling
- 소켓
- dfs
- Node.js
- 문자열
- 타입 챌린지
- HTTP
- Algorithm
- typescript
- 알고리즘
- socket
- 가천대
- 백준
- ip
- 그래프
- 수학
- 레벨 1
- TCP
Archives
- Today
- Total
kakasoo
배열의 Length를 뽑는 타입 본문
반응형
type Length<T extends any[]> = T['length'];
타입 레벨에서의 extends 키워드는 타입 상속
을 의미한다.
타입 A가 B를 상속할 때, A는 B의 모든 프로퍼티와 메서드를 상속받아야 하는데, 조건문의 의미로도 쓰인다.
A가 B를 상속받는다는 것은 최소한 A가 B와 같거나, B보다 더 구체적인 ( = 더 많은 프로퍼티를 가진 ) 것
이다.
위의 Length는, 생각보다 별 거 아닌 게, 제너릭으로 받은 T는 any[]를 상속받으니 즉 어떠한 배열을 의미한다.
T가 배열이라면 반드시 내부에 length 프로퍼티가 있기 때문에, T[’length’]로 특정 프로퍼티를 뽑을 수 있다.
type Length<T extends any[]> = T['length'];
type A = Length<[1,2,3,4,5]>;
const length: A = 5; // 5가 아닌 경우 compile error를 뱉게 된다.
Array의 length property는 그냥 number가 아니라 number literal types다.
number literal type은 1이나 2.5, 3e5 등 특정 값을 의미하는 숫자 타입을 의미
한다.
Length는 배열을 받아, 그 배열의 Length를 뽑는 타입이며, 배열의 length type은 number literal type,
즉, 항상 그 시점의 배열 크기를 반환하는 타입이 된다.
반응형
'프로그래밍 > TypeScript' 카테고리의 다른 글
NTuple 타입 정의하기 (0) | 2023.01.21 |
---|---|
type Push = <T extends any[], value> = […T, value] (0) | 2023.01.20 |
Extract<Type, Union> (0) | 2023.01.18 |
싱글턴(Singleton) 패턴이란? (0) | 2023.01.13 |
new (…args): T 타입이란? (4) | 2023.01.03 |