typescript

TypeScript 개념과 기본 타입 완벽 정리

최근 JavaScript의 인기가 계속 높아지고 있지만, 막상 실무에서 순수 JavaScript만 사용하면 여러 가지 고민이 생깁니다. 코드가 커지면 어떤 변수가 어떤 타입인지 헷갈릴 때가 생깁니다. 게다가 "런타임"에서야 알 수 있는 오류를 매번 찾아 고치는 건 정말 힘들어요. 바로 이런 문제를 해결해 주는 것이 오늘 소개할 TypeScript입니다.

오늘 포스팅에서는 TypeScript를 왜 사용하는지, 기본 타입이 무엇인지, 그리고 간단한 예시와 함께 실무에 바로 적용할 수 있도록 핵심을 정리해보겠습니다.


TypeScript란 무엇이고 왜 사용할까요?

TypeScript는 간단히 말하면 JavaScript의 업그레이드 버전이라고 볼 수 있습니다. 마이크로소프트가 개발한 오픈 소스 프로그래밍 언어이며, JavaScript에 "정적 타입(Static Typing)"이라는 개념을 추가한 것이 특징입니다.

JavaScript는 변수를 선언할 때 타입을 지정하지 않아도 되죠. 그래서 자유로운 코딩이 가능하지만, 그만큼 오류를 찾기 어렵고 코드가 복잡해지면 유지보수가 힘들어집니다.

반면 TypeScript는 "코드를 작성할 때 미리 타입을 지정"하여, 개발자가 실수를 일찍 발견하도록 도와줍니다. 이것이 바로 TypeScript를 사용하는 가장 큰 이유입니다. 또한 타입이 명확하기 때문에 코드가 더 읽기 쉽고, 큰 규모의 프로젝트에서도 안정적인 코드 관리가 가능합니다.


TypeScript의 기본 타입 (Basic Types)

TypeScript에서는 다양한 타입을 제공하는데, 기본적인 타입부터 먼저 살펴보겠습니다.

Number 타입

JavaScript와 마찬가지로, TypeScript에서도 숫자를 다루기 위해 사용하는 타입입니다. 정수, 실수 모두 포함하며 사용법은 매우 간단합니다.

typescript
let count: number = 10
let price: number = 299.99

number 타입은 숫자 계산이나 수학적 연산에서 꼭 필요한 타입이라 할 수 있습니다.

String 타입

문자열 타입입니다. 텍스트 데이터를 저장할 때 사용되며, JavaScript의 문자열과 동일하게 큰따옴표(" "), 작은따옴표(' '), 백틱(` `)을 모두 사용할 수 있습니다.

typescript
let userName: string = 'Hanpy'
let greeting: string = `Hello, ${userName}!`

Boolean 타입

참(true) 또는 거짓(false)을 나타내는 타입입니다. 조건문이나 로직 제어에 많이 쓰이죠.

typescript
let isLoggedIn: boolean = true

특별한 타입들 (Special Types)

기본 타입 외에 TypeScript가 제공하는 독특하고 특별한 타입들도 살펴봅시다.

Any 타입

any 타입은 말 그대로 아무 타입이나 허용하는 타입입니다. JavaScript와 가장 가까운 타입이죠. 급하게 타입을 지정할 수 없을 때나 레거시 코드와 통합할 때 주로 사용합니다. 하지만 너무 자주 사용하면 TypeScript의 장점을 잃게 됩니다.

typescript
let randomValue: any = 10
randomValue = 'text' // 아무 타입이나 할당 가능

Unknown 타입 [Link]

unknown 타입도 어떤 값이든 들어올 수 있지만, 직접적인 할당이나 사용 전에 타입 검사가 필수적입니다. 즉, any 타입보다는 조금 더 안전한 타입이죠.

typescript
let userInput: unknown
 
userInput = 'TypeScript'
if (typeof userInput === 'string') {
  let message: string = userInput // 타입 검사 후 사용 가능
}

Void 타입

반환 값이 없는 함수의 반환 타입으로 사용됩니다. 주로 함수에서 사용되며, 명시적으로 반환 값이 없음을 나타냅니다.

typescript
function logMessage(): void {
  console.log('Hello, TypeScript!')
}

Never 타입

절대 반환되지 않는 함수의 반환 타입으로 사용합니다. 오류를 던지거나, 무한 루프를 돌 때 활용합니다.

typescript
function throwError(message: string): never {
  throw new Error(message)
}

이 타입들은 간단해 보이지만 올바르게 사용할 때 코드의 안전성을 크게 높일 수 있습니다.


정리

TypeScript를 사용하면 코드의 품질과 안정성이 크게 올라갑니다. 특히 정적 타입을 통해 런타임 에러를 줄이고, 개발 단계에서 실수를 빠르게 찾을 수 있습니다. 오늘은 그 첫걸음으로 기본 타입들과 특별한 타입들을 살펴보았습니다.


참고