let과 const의 차이점부터 이해하자
자바스크립트와 마찬가지로, TypeScript에서도 변수를 선언할 때 let
과 const
를 사용합니다. 하지만 TypeScript에서는 여기에 타입 주석(Type Annotation)을 더해 변수의 타입을 명확하게 지정할 수 있습니다.
let
: 값을 변경할 수 있는 변수 선언const
: 한 번 할당한 값을 변경할 수 없는 상수 선언
TypeScript에서는 코드의 안정성을 위해, 가능한 const
를 우선적으로 사용하고, 필요한 경우에만 let
을 사용하는 것이 권장됩니다.
변수에 타입 주석을 다는 방법
TypeScript에서 변수에 타입을 지정하려면 변수 이름 뒤에 콜론(:
)과 타입 이름을 작성합니다. 이것이 바로 타입 주석입니다.
let age: number = 30;
const username: string = "Alice";
let isAdmin: boolean = true;
이처럼 변수에 타입을 명시적으로 선언함으로써, 값이 잘못된 타입으로 변경될 경우 컴파일 단계에서 오류가 발생하게 됩니다.
타입 추론 vs 명시적 타입 선언
TypeScript는 타입 추론(Type Inference) 기능이 내장되어 있어, 값을 할당하면 자동으로 타입을 추정합니다.
let city = "Seoul"; // city는 string으로 추론됨
그러나 모든 상황에서 추론이 이상적으로 작동하는 것은 아니기 때문에, 특히 초보자나 협업 환경에서는 명시적 타입 선언을 사용하는 것이 좋습니다.
const에도 타입을 명시할 수 있을까?
const
로 선언한 상수에도 타입을 명시할 수 있습니다. 다만, 대부분의 경우 TypeScript가 값을 기준으로 타입을 정확히 추론하기 때문에 굳이 명시하지 않아도 됩니다.
const pi: number = 3.14; // 명시적 선언
const siteName = "MyBlog"; // string으로 자동 추론
하지만 객체나 배열처럼 구조가 복잡한 경우에는 명확한 타입을 선언하는 것이 유지 보수에 유리합니다.
객체와 배열에도 타입을 적용하자
변수에 단순한 값뿐 아니라 배열이나 객체를 할당할 때에도 타입을 선언할 수 있습니다. 예를 들어 아래와 같이 작성할 수 있습니다:
let fruits: string[] = ["apple", "banana"];
const user: { name: string; age: number } = {
name: "Tom",
age: 25
};
이처럼 객체 구조와 배열 요소의 타입을 지정해두면, 실수로 잘못된 값이 들어오는 것을 방지할 수 있습니다.
유형이 불확실한 경우는 어떻게 할까?
초기에는 타입이 명확하지 않거나 나중에 결정되는 경우도 있을 수 있습니다. 이때 any
타입을 사용하면 모든 값을 허용할 수 있지만, 이는 타입스크립트의 장점을 해치는 사용법이므로 최소화해야 합니다.
let temp: any = "문자열";
temp = 100; // 허용되지만 위험할 수 있음
대신 명확한 유니언 타입이나 별도의 인터페이스를 선언해 사용하는 것이 바람직합니다.
마무리: 작은 습관이 큰 안정성을 만든다
이번 강의에서는 TypeScript에서 변수(let
)와 상수(const
)에 타입을 적용하는 방법에 대해 알아보았습니다. 명시적 타입 선언, 타입 추론, 객체와 배열의 타입 지정까지 — 이 모든 것은 코드의 안정성을 높이는 중요한 습관입니다.
타입을 명확히 선언하는 것은 단순히 문법을 따르는 것을 넘어, 코드의 의도를 드러내고 버그를 사전에 차단하는 가장 좋은 방법입니다.
다음 강의에서는 조건문과 반복문에서 타입이 어떻게 작동하는지를 다뤄보겠습니다.