
let anyVal : number | string;
// 넘버나 스트링 타입이 둘 다 올 수 있어.
하지만 저 number | string 을 함수나 변수에 여러 번 써야한다면, 계속 저걸 반복적으로 사용하는 것보다 저런 타입을 하나 지정해두면 더 간편해진다. (중복되는 기능을 하나의 함수로 만들어서 사용하는 것 처럼 이 타입도 그렇게 사용할 수 있다.)
어떻게 사용하냐면
type strOrNum = number | string;
이런 식으로 정해주면, 이제 strOrNum이란 변수의 타입은 넘버 아니면 스트링 이기에 저 변수를 사용해서 타입을 지정해줄 수 있다.
정리하면,
any타입 : 타입 체크를 하지 않는다. 어떤 타입이 오더라도 괜찮아. 하지만 그럼 타입스크립트 쓰는 이유가 없겠지?
유니온 타입 : 제한된 타입들을 파이프라인으로 구분하여 동시에 지정함. (여러 개의 타입을 지정해서 사용할 수 있어.)
타입 알리아스 : 반복되는 코드를 재사용한다.
타입 가드 : typeof 연산자를 이용하여 타입 검증을 수행한다.
타입스크립트의 배열
let numbers : number[] = [1, 2, 3, 4, 5];
let fruits : string[] = ['apple', 'banana', 'orange'];
이런 식으로 타입을 정해주면 된다. 타입을 정해주면 그 배열 안에는 해당하는 타입만 배열로 가질 수 있다.
배열도 마찬가지로 타입을 유니온 타입으로 여러 개 가질 수 있는데,
let mixedArray : (number | string)[] = [1, 'one', 2, 'two'];
이런 식으로 쓸 수 있고, 이것도 당연히 저기 만들어둔, strOrNum도 사용할 수 있음!
튜플
let greeting : [number, string, boolean] = [1, 'hello', true];
튜플은 이런 식으로 타입의 순서가 정해져 있어.
그렇기 때문에 순서 맞게 배열의 타입을 작성할 수 있지.
Spread 연산자
let firstArray = [1, 2, 3];
let secondArray = [4, 5, 6];
let combineArray = [...firstArray, ...secondArray];
저 두개의 배열을 합치고 싶으면 어떻게 하냐면, 일단 저 배열이 괄호로 각각 묶여져 있으니까, 그 괄호를 허물어주면 돼.
허무는 방법은
이렇게 배열 앞에 ...을 붙이면 배열의 괄호를 벗기게 해준다. 그래서 그 배열안에 있는 값들을 가져올 수 있어.