<aside> 🔹 Overview

자바스크립트와 타입스크립트의 가장 큰 차이점은 ‘타입’이다. 이번 파트를 통해서 타입스크립트상 타입이 어떻게 쓰이는지 전반적으로 훑어보도록 하자.

</aside>

3.1 타입스크립트 타입 알아보기

3.1.1 타입 지정하는 방법 (타입 선언 및 타입 추론)

지난 장에서 타입 스크립트를 사용하는 방법과 그 이유에 대해 다뤘다. 이번 장에서는 실제로 코드를 작성하면서 타입을 선언하는 방법에 대해 알아보도록 하자. 자바스크립트에서 문자열을 가지는 변수를 만들 때에는 다음과 같이 선언하고 값을 할당한다.

// 자바스크립트 코드
let str = 'hello world!';
// 타입스크립트 코드
let str:string = 'hello world!';

하지만 이 경우 변수str 에는 다른 자료형의 값을 할당할 수 있다. 그런데 만약 해당 변수가 문자열만을 할당 받아야 한다면 어떻게 해야 할까? 이 문제는 타입 선언을 통해 해결할 수 있다. 타입 선언은 아래와 같이 : 을 이용하여 이뤄지고 이것을 타입 표기(Type Annotation)라고 한다. 타입 표기법은 타입을 표기하려는 대상의 오른쪽에 위치한다.

let str : string = 'hello wolrd';

이렇게 타입을 선언한 이후에 문자열로 선언된 변수 str에 숫자를 할당하면 어떻게 될까?

let str : string = 'hello wolrd';
str = 1; // Type 'number' is not assignable to type 'string'.

이런 경우 타입 스크립트에서는 타입이 문자열이라는 에러를 보여준다. 그렇다면 모든 값들에 타입을 정해줘야 하는 것일까? 정답은 **‘그렇지 않다’**이다. 타입스크립트는 타입을 선언하지 않더라도 코드를 해석해 타입을 추론한다. 이를 ‘타입 추론(Type Inference)이라고 한다. 위에서 선언한 자바스크립트 코드를 다시 한 번 살펴보자.

let str = 'hello world!'; // 자바스크립트 코드
str = 3 ; // 에러 발생
console.log(str); 

자바스크립트에서는 다음과 같이 변수에 타입을 선언할 수 없고, 따라서 다른 자료형의 값들을 할당할 수 있다.