변수 선언부터 enum까지, 타입스크립트의 핵심 타입 시스템을 정리합니다.
1. 기본 타입 — string, number, boolean
TypeScript의 가장 기본이 되는 세 가지 원시 타입입니다. 변수 선언 시 콜론(:) 뒤에 타입을 명시합니다.
let car: string = 'bmw';
let age: number = 30;
let isAdult: boolean = true;
타입을 명시하면 해당 변수에 다른 타입의 값을 할당할 때 컴파일 단계에서 에러를 잡아줍니다. 런타임 에러를 사전에 방지할 수 있는 핵심 장점입니다.
2. 배열 타입
배열은 두 가지 문법으로 선언할 수 있습니다. 기능은 완전히 동일하며, 팀 컨벤션에 따라 선택하면 됩니다.
// 방법 1: 타입[]
let a: number[] = [1, 2, 3];
let week1: string[] = ['mon', 'tue'];
// 방법 2: Array<타입> (제네릭)
let a2: Array<number> = [1, 2, 3];
let week2: Array<string> = ['mon', 'tue'];
💡
number[]가 더 간결하고,Array<number>는 제네릭 문법에 익숙한 경우 선호됩니다. React의 JSX와 혼동을 피하려면number[]를 쓰는 편이 낫습니다.
3. 튜플 (Tuple)
배열의 길이와 각 요소의 타입이 고정된 형태입니다. 인덱스별로 타입이 다를 수 있어서, API 응답이나 좌표값 등에 유용합니다.
let b: [string, number];
b = ['z', 1]; // ✅ OK
b = [1, 'z']; // ❌ Error — 순서가 맞지 않음
b[0].toLowerCase(); // ✅ string 메서드 사용 가능
b[1].toLowerCase(); // ❌ Error — number에는 toLowerCase 없음
⚠️ 튜플은 순서가 중요합니다.
[string, number]와[number, string]은 완전히 다른 타입이며, 순서를 바꾸면 컴파일 에러가 발생합니다.
4. void와 never
함수의 반환 타입에 주로 사용되는 두 가지 특수 타입입니다.
void — 반환값이 없는 함수
function hello(): void {
console.log('hello');
}
함수가 값을 return하지 않을 때 사용합니다.
never — 절대 정상 종료되지 않는 함수
// 항상 에러를 던지는 함수
function showError(): never {
throw new Error();
}
// 무한 루프
function infLoop(): never {
while (true) {
// 영원히 끝나지 않음
}
}
💡
void는 "값을 반환하지 않는다"는 의미이고,never는 "함수가 절대 끝나지 않는다"는 의미입니다. 항상 예외를 던지거나 무한 루프인 함수에never를 씁니다.
5. 열거형 (Enum)
연관된 상수들을 하나의 그룹으로 묶어 관리하는 타입입니다. 값을 지정하지 않으면 0부터 자동으로 숫자가 할당됩니다.
enum Os {
Window, // 0
Ios, // 1
Android // 2
}
console.log(Os['Ios']); // 1
console.log(Os[0]); // "Window"
숫자형 enum은 양방향 매핑이 됩니다. Os['Ios']로 값(1)을 얻고, Os[0]으로 이름("Window")을 얻을 수 있습니다. 문자열 enum은 역방향 매핑이 되지 않습니다.
타입으로 활용하기
let myOs: Os;
myOs = Os.Window; // ✅ Os에 정의된 값만 할당 가능
변수의 타입을 Os로 지정하면 Os.Window, Os.Ios, Os.Android 중 하나만 할당할 수 있어 안전합니다.
6. null과 undefined
각각 "비어 있음"과 "아직 정의되지 않음"을 나타내는 타입입니다.
let s: null = null;
let d: undefined = undefined;
💡 단독으로 쓰이는 경우는 거의 없고, 보통 유니온 타입과 함께
string | null형태로 사용합니다.tsconfig.json에서strictNullChecks를 켜면 null 체크를 강제할 수 있습니다.
한눈에 보기
| 타입 | 설명 | 예시 |
|---|---|---|
string |
문자열 | 'hello' |
number |
숫자 (정수·실수) | 30 |
boolean |
참/거짓 | true |
number[] |
숫자 배열 | [1, 2, 3] |
[string, number] |
튜플 (고정 길이·순서별 타입) | ['z', 1] |
void |
반환값 없는 함수 | — |
never |
끝나지 않는 함수 | — |
enum |
상수 그룹 열거형 | Os.Window |
null |
비어 있음 | null |
undefined |
미정의 | undefined |
'프론트' 카테고리의 다른 글
| TypeScript 함수 타입 (0) | 2026.04.11 |
|---|---|
| TypeScript 인터페이스(Interface) (0) | 2026.04.11 |
| 타입스크립트를 사용하는 이유 (0) | 2026.04.11 |
| JavaScript 한국어 조사 자동 선택 함수 (0) | 2026.02.10 |
| JavaScript 유틸리티 함수 - deepClone (0) | 2026.02.09 |