iBetter Books
수정

타입은 이름표입니다

마트에서 상품을 정리한다고 상상해보세요. 과일 코너에는 과일만, 음료 코너에는 음료만, 과자 코너에는 과자만 놓습니다. 이름표가 붙어있으니 누가 봐도 어디에 뭘 놓아야 할지 알 수 있습니다.

TypeScript의 타입도 마찬가지입니다. 변수에 "이 변수에는 문자열만 넣을 수 있어"라는 이름표를 붙이는 것입니다.

세 가지 기본 타입

TypeScript에서 가장 자주 사용하는 기본 타입은 세 가지입니다.

string — 문자열

const name: string = "김민수";const greeting: string = "안녕하세요";const template: string = `${name}님, ${greeting}`;

문자열을 담는 변수에 : string이라는 이름표를 붙입니다. 작은따옴표, 큰따옴표, 백틱 모두 사용할 수 있습니다.

number — 숫자

const age: number = 25;const pi: number = 3.14;const hex: number = 0xff;const negative: number = -10;

정수, 실수, 16진수 등 모든 숫자를 담을 수 있습니다. JavaScript처럼 정수와 실수를 구분하지 않고 모두 number 타입입니다.

boolean — 참/거짓

const isStudent: boolean = true;const hasPermission: boolean = false;

true 또는 false 두 가지 값만 가질 수 있습니다.

타입 표기 문법

TypeScript에서 타입을 지정하는 문법은 간단합니다.

let 변수이름: 타입 = 값;

콜론(:) 뒤에 타입 이름을 씁니다. 몇 가지 예를 더 살펴보겠습니다.

let username: string = "이영희";let score: number = 95;let isPassed: boolean = true;

잘못된 타입의 값을 넣으면

타입이 맞지 않는 값을 넣으면 TypeScript가 에러를 표시합니다.

let age: number = 25;age = "스물다섯"; // 에러! Type 'string' is not assignable to type 'number'.

age는 숫자라고 선언했으니, 문자열을 넣을 수 없습니다. 이것이 TypeScript가 제공하는 타입 안전성입니다.

let name: string = "김민수";name = 42; // 에러! Type 'number' is not assignable to type 'string'.let isActive: boolean = true;isActive = "yes"; // 에러! Type 'string' is not assignable to type 'boolean'.

let과 const의 타입 차이

letconst로 선언한 변수의 타입에는 미묘한 차이가 있습니다.

let message: string = "안녕하세요";   // message의 타입: stringconst greeting = "반갑습니다";         // greeting의 타입: "반갑습니다" (리터럴 타입)

let으로 선언한 변수는 값이 바뀔 수 있으므로 넓은 타입(string)을 가집니다. const로 선언한 변수는 값이 바뀌지 않으므로 좁은 타입(해당 값 자체)을 가집니다. 참고로 const greeting: string처럼 타입을 명시하면 리터럴 타입이 아닌 string이 됩니다. 이 차이는 나중에 "리터럴 타입"을 배울 때 더 자세히 다룹니다.

기본 타입 정리

타입 설명 예시
string 문자열 "hello", 'world', `template`
number 숫자 42, 3.14, -10, 0xff
boolean 참/거짓 true, false

이 세 가지가 TypeScript에서 가장 기본이 되는 타입입니다. 다음 챕터에서는 이 타입을 직접 쓰지 않아도 TypeScript가 알아서 타입을 파악하는 "타입 추론"에 대해 알아보겠습니다.