TypeScript의 핵심, 타입 시스템 이해하기
TypeScript의 가장 큰 특징은 정적 타입(Static Type)을 지원한다는 점입니다. 이는 코드 작성 시 변수나 함수에 어떤 종류의 데이터가 들어올지 명확히 정의할 수 있으며, 런타임 이전에 오류를 사전에 방지할 수 있다는 뜻입니다.
이번 강의에서는 TypeScript의 타입 시스템 기초 개념과 함께 변수, 함수, 객체에 타입을 선언하는 기본적인 방법을 소개합니다. 정적 타입 언어에 익숙하지 않은 자바스크립트 개발자라면 처음에는 다소 낯설 수 있지만, 익숙해질수록 생산성과 안정성이 크게 향상됩니다.
기본 타입 선언 방법
TypeScript는 여러 가지 기본 타입을 제공합니다. 가장 자주 사용하는 타입은 아래와 같습니다:
number
– 숫자형string
– 문자열boolean
– 참/거짓null
과undefined
any
– 모든 타입 허용 (가능하면 지양)
변수에 타입을 지정하는 기본 문법은 아래와 같습니다:
let age: number = 30;
let username: string = "John";
let isAdmin: boolean = true;
함수에서의 타입 선언
함수에도 매개변수(parameter)와 반환값(return value)에 타입을 지정할 수 있습니다. 이렇게 하면 잘못된 타입의 인자가 전달되었을 때 즉시 오류가 발생하기 때문에 디버깅이 훨씬 쉬워집니다.
function greet(name: string): string {
return "Hello, " + name;
}
위 함수는 name
이라는 문자열 타입의 매개변수를 받고, 결과로 문자열을 반환합니다.
배열과 객체에 타입 선언하기
TypeScript에서는 배열과 객체에도 타입을 명확히 선언할 수 있습니다. 배열은 요소의 타입을 지정하고, 객체는 각 속성의 타입을 정의하는 식으로 사용합니다.
let scores: number[] = [90, 85, 88];
let user: { name: string; age: number } = {
name: "Alice",
age: 28
};
이처럼 구조화된 데이터에 타입을 지정하면 코드의 신뢰성이 더욱 높아집니다.
타입 추론과 명시적 타입 선언
TypeScript는 타입을 자동으로 추론할 수 있는 기능을 갖고 있습니다. 예를 들어 아래 코드는 변수 msg
에 자동으로 문자열 타입을 부여합니다:
let msg = "Hello"; // string으로 추론됨
하지만 복잡한 구조나, 외부 입력이 섞이는 경우에는 타입을 명시적으로 선언하는 것이 좋습니다. 추론과 선언의 균형을 잘 잡는 것이 실무에서 중요한 포인트입니다.
유니언 타입과 타입 앨리어스
유니언 타입(Union Type)을 사용하면 하나의 변수에 여러 타입을 허용할 수 있습니다.
let id: number | string;
id = 101;
id = "ABC123";
또한 타입 앨리어스(Type Alias)를 사용하면 복잡한 타입 구조를 이름으로 정의하여 재사용할 수 있습니다.
type User = {
name: string;
age: number;
};
let admin: User = {
name: "Bob",
age: 35
};
마무리: 타입 시스템은 TypeScript의 핵심
이번 강의에서는 TypeScript의 정적 타입 시스템에 대해 살펴보았습니다. 변수, 함수, 배열, 객체 등 다양한 구조에서 타입을 선언하고, 이를 통해 코드를 더 안정적이고 명확하게 만드는 방법을 배웠습니다.
TypeScript의 타입 시스템은 단순한 문법이 아니라, 오류를 줄이고 협업을 원활하게 해주는 핵심 도구입니다. 초보자일수록 가능한 한 많은 부분에 타입을 명시적으로 선언해보며 감을 익히는 것이 좋습니다.
다음 강의에서는 TypeScript의 고급 타입들 – 인터페이스, 제네릭 등을 다룰 예정입니다.