타입스크립트에서는 변수이름뒤에 :type 의 형태로 변수의 타입을 지정한다. 타입주석, type annotation 이라고한다.

let num1**: number** = 123

원시타입

Primitive Type은 하나의 값만을 저장하는 타입이다.

// number
let num1: number = 123; //정수
let num2: number = -123; //음수
let num3: number = 0.123; //소수
let num4: number = -0.123; //음의소수
let num5: number = Infinity; //무한대
let num6: number = -Infinity; //음의무한대
let num7: number = NaN; // not a number

// string
let str1: string = "hello";
let str2: string = `hello`;
let str3: string = `hello${num1}`;

// boolean
let bool1: boolean =  true;
let bool2: boolean = false;

// null
let null1: null = null

// undefined
let unde1: undefined = undefined;

리터럴타입

값 그 자체가 타입이 된다.

numA의 타입을 10이라는 값만을 넣을 수 있게 지정했기 때문에 12를 다시 할당할 수 없다.

let numA:10 = 10;
let strA:'hello' = 'hello';
let boolA: true = true;

**numA = 12;** // 에러

리터럴타입과 const

원시타입에 한해 const로 값을 선언하는것과 리터럴 타입을 직접 정의하는것은 큰 차이가 없다.

const로 변수를 선언시 값이 곧 타입이 된다.

// animal의 타입은 string
let animal = 'cat; 

// ANIMAL의 타입은 'cat'
const ANIMAL = 'cat';

배열과 튜플

타입 추론