타입스크립트에서 선언할 수 있는 타입 종류 정리
❗ 타입스크립트는 일반 변수, 매개 변수, 객체 속성 등에
: TYPE
과 같은 형태로 타입을 지정할 수 있다.
✅ JavaScript는 총 6개의 원시 타입(number, string, boolean, null, undefined, symbol(es6에서 추가))과 참조 타입(=원시 타입이 아닌 나머지 타입 :object, array, function..)을 가지고 있다.
참(true), 거짓(false) 값
let isBoolean:boolean;
isBoolean=true;
문자열 (작은따옴표('), 큰따옴표(") 뿐만 아니라 ES6의 템플릿 문자열도 string 타입에 포함)
let str:stirng="hello";
숫자 (정수, 실수, Infinity, NaN)
- 16진수, 10진수, 2진수, 8진수 리터럴도 지원
let num:number=10;
배열을 나타내는 2가지 방법
- 배열 요소들을 나타내는 타입 뒤에 1. [] 작성, 2. Array<배열 타입> 작성
//[]
let arr: number[]=[1,2,3];
//Array<배열타입>
let arr2: Array<number>=[4,5,6];
튜플. 배열의 서브타입 (크기와 타입이 고정된 배열이라고 이해하기)
- 정해진 갯수의 요소를 가져와야 하는 배열을 지정해서 응용 가능
- 값 자체를 고정시킬 수도 있다. (강한 타입)
❗ 튜플은 정해진 타입의 고정된 길이 배열을 표현하지만 이는 할당(Assign)에 국한된다. push() 등으로 추가하는 걸 막을 수는 없다.
let tuple: [number,string]=[1,"hi"];
객체 (자바스크립트에서 object는 객체 뿐만 아니라 배열, 함수까지 포함. ❗ 정확히 number, string, boolean, bigint, symbol, null, 또는 undefined가 아닌 나머지를 의미)
- 여러 타입의 상위 타입으로 인식되기 때문에 타입스크립트에서 object를 그대로 타입으로 쓰기에는 오류가 많다.
- 객체에 타입을 지정해주고 싶다면 객체 속성(Properties)들에 대한 타입을 개별적으로 지정하는 식으로 사용해야 하는데 가독성이 좋지 않다.
💡 이를 극복하기 위해 type 리터럴이라고 불리는 alias 기능과 interface라는 문법 추가
//type alias
type IUser = {
name: string,
age: number
}
let userA: IUser = {
name: 'HEROPY',
age: 123
};
//interface
interface IUser2={
name:string,
age:string
}
let userB=Iuser2={
name:'OOP',
age:"12"
}
열거형. 특정 값(상수)들의 집합.
- 튜플 타입이 특정 타입이나 값을 고정하는 배열이라면, Enum은 특정 값을 고정하는 또다른 독립된 자료형이라고 보면 된다.
enum Fruit {apple, peach, banana}
let eat: Fruit=Fruit.apple; //0
symbol 값은 변경 불가능하며 고유하며 생성자를 호출하여 생성한다.
📌 TypeScript 핸드북 11 - Symbol
값이 없음을 선언.
let block: null=null;
값이 아직 할당되지 않음.
let block: undefined=undefined;
모든 타입에 대해서 허용한다는 의미.
- 남발해서 사용하면 타입 선언의 의미가 없어지기 때문에 적절한 곳에 사용해야 한다.
let num: any= "string";
num=1;
num=null;
알 수 없는 타입을 의미하며, any와 같이 모든 데이터 타입을 받을 수 있다.
let num: unknown = 123;
❗ any와 unknown의 차이점 : '엄격함'
함수에서 반환 값이 없을 때 반환 타입을 표현하기 위해 쓰인다
- void를 함수가 아닌 변수 타입으로 정의한다면, void 타입 변수에는 undefined와 null만 할당이 가능하다.
function num(n: number): void {
let sum: number = n + 1;
}
타입스크립트에서 잘못된 것을 알려주기 위한 키워드로 절대 발생할 수 없는 타입을 나타낸다. (어떠한 자료형 값을 담기 위한 타입이 아님)
- 에러를 반환하는 함수 표현식에서 항상 오류를 발생시키거나 절대 반환하지 않는 반환 타입으로도 쓰일수 있다.