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
- 알고리즘
- CS
- DFS
- BFS
- 컴퓨터공학
- KAKAO
- github
- computerscience
- 자바스크립트
- 국비지원
- 패스트캠퍼스
- 백준
- 국비지원취업
- 그리디
- git
- 프론트엔드개발자
- html/css/js
- 너비우선탐색
- 코딩테스트
- 호이스팅
- 부트캠프
- 코테
- nodejs
- cpu
- Javascript
- CSS
- 야놀자
- js
- LinkSnap
- 컴퓨터과학
Archives
- Today
- Total
My Boundary As Much As I Experienced
TypeScript) 배열과 튜플 타입 본문
배열 타입
'배열'의 타입은 : []라고 지정하면... 될 줄 알았다. 그러나 이렇게 빈 배열을 타입으로 지정하면 '진짜 빈 배열' 이외에는 받지 못한다.
string[], number[], ... 이런 식으로 어떤 데이터를 받는지를 리터럴 앞에 써줘야 한다.
const person: string[] = ["Kim", "Han"]
// 문자열만 받는 배열 생성. 초기화 때 비워놔도 된다. 어차피 문자열 들어간다고 선언해놨으니 다른 데이터가 들어갈 가능성은 없다.
person.push(5) // 에러
만약 받을 수 있는 데이터 타입이 2개 이상이면 어떻게 할까? 유니언 타입을 [] 앞에 써두면 된다. ([]은 객체 리터럴이라 한다.)
const person: (string|number)[] = ["Kim", "Han"]
// 유니언타입을 리터럴 앞에 써두면 된다. 유니언 타입은 쉽게말해 '또는'으로 엮인 중복 타입이다.
person.push(5) // 가능
튜플 타입
타입스크립트 처음 배울 때 숫자와 문자만 받을 수 있는 배열을 [number, string]을 쓰면 될 줄 알았던 적이 있다.
그러나 이건 사실 tuple타입이다. 혼합될 수 있는 인자의 갯수와 타입을 제한하여 만든 형식이다.
숫자와 문자만 받을 수 있는 동적인 배열을 만들고 싶으면 위에 말한대로 유니언 타입을 쓰면 된다. (string|number)[]
const person: {
name: string;
age: number;
hobby: string[];
role: [number, string]; // 튜플 타입을 의미함
// 첫 번째 인자는 숫자이고 두 번째 인자는 문자인 배열을 의미함.
// 인자가 딱 정해져 있어야하면 튜플을 쓰는 것이 좋다.
// 튜플의 인자 개수는 선언할 때 정하기 나름이다. 하여튼 선언은 자유지만 선언 이후엔 그대로 지켜야 된다.
} = {
name: "bumang",
age: 30,
hobby: ["sport", "cooking"],
role: [1, "gamer"],
};
위 예시는 role이란 프로퍼티에 [number, string]으로 튜플 타입을 지정해줬다.
참고사항
- 여기에 [1, "player"]는 지정해줄 수 있지만, ["player", 1]은 지정해줄 수 없다. string과 number의 위치가 뒤바뀌었기 때문이다.
- 또한 [10, true]도 넣을 수 없다. 두 번째 인자가 boolean이 아니라 string이어야 하기 때문이다.
- [10, "staff", false]도 넣을 수 없다. 지정된 인자가 아닌게 하나 껴있기 때문이다.
'FrontEnd > TypeScript' 카테고리의 다른 글
TypeScript) 커스텀 타입 vs 인터페이스 (0) | 2023.10.20 |
---|---|
TypeScript) enum (0) | 2023.10.18 |
TypeScript) 객체 타입 (0) | 2023.10.17 |
TypeScript) 타입스크립트를 쓰는 이유 (0) | 2023.10.17 |
TypeScript) 상수와 변수, 타입 추론 (0) | 2023.10.17 |