티스토리 뷰
Frontend/Typescript
기본 타입 정복: string, number, boolean부터 any, unknown, never의 차이점
미니임 2026. 2. 19. 00:05
안녕하세요! 오늘은 TypeScript를 처음 시작할 때 반드시 넘어야 할 산인 **'기본 타입'**에 대해 알아보겠습니다. 단순히 타입을 지정하는 법을 넘어, 실무에서 혼란을 주기 쉬운 any, unknown, never의 차이점까지 풍부한 예제와 함께 정리해 드립니다.
1. 가장 많이 쓰이는 기본 삼총사: string, number, boolean
가장 기초가 되는 원시 타입들입니다.
🎨 String (문자열)
텍스트 데이터를 저장할 때 사용합니다. 작은따옴표('), 큰따옴표("), 그리고 템플릿 리터럴(`)을 모두 지원합니다.
let userName: string = "Jane";
let greeting: string = `Hello, ${userName}!`; // 템플릿 리터럴 사용
🔢 Number (숫자)
정수, 실수, 2진수, 8진수, 16진수 등 모든 숫자를 포함합니다.
let count: number = 42;
let pi: number = 3.14159;
let hex: number = 0xf00d; // 16진수
✅ Boolean (불리언)
참(true) 또는 거짓(false) 값을 가집니다.
let isDone: boolean = false;
let hasPermission: boolean = true;
2. '모두 다 돼' vs '아직 몰라': any vs unknown
이 두 타입은 어떤 값이든 들어올 수 있다는 점은 같지만, 안전성에서 큰 차이가 납니다.
🚫 any (타입의 무법자)
any는 타입 검사를 완전히 해제합니다. TypeScript를 쓰는 의미를 퇴색시키므로 가급적 지양해야 합니다.
let value: any = 10;
value = "Hello"; // 오류 없음
value.push(1); // 런타임 에러 발생 가능성 농후 (문자열에는 push가 없음에도 컴파일 시점에 체크 못함)
🛡️ unknown (안전한 '모름')
unknown 역시 어떤 값이든 할당받을 수 있지만, 그 값을 사용하려면 반드시 타입 확인(Type Guard) 과정을 거쳐야 합니다.
let secretValue: unknown = "I am a string";
// secretValue.toUpperCase(); // ❌ 오류: 'unknown' 형식에 'toUpperCase'가 존재하지 않음
if (typeof secretValue === "string") {
console.log(secretValue.toUpperCase()); // ✅ 정답: 타입이 확인된 범위 내에서만 사용 가능
}
3. 절대 일어날 수 없는 일: never
never는 절대 발생하지 않는 값을 의미합니다. 보통 다음 두 가지 상황에서 쓰입니다.
1) 함수가 비정상적으로 종료되거나 무한 루프일 때
function throwError(message: string): never {
throw new Error(message); // 함수가 끝까지 실행되지 않음
}
function infiniteLoop(): never {
while (true) {} // 반환되는 값이 없음
}
2) 완전한 타입 보장 (Exhaustive Check)
모든 케이스를 다 다루었는지 검증할 때 유용합니다.
type Color = "Red" | "Blue";
function getColorName(color: Color) {
switch (color) {
case "Red":
return "빨강";
case "Blue":
return "파랑";
default:
// 만약 나중에 Color에 "Green"이 추가되었는데 여기서 처리를 안 했다면?
// 아래 줄에서 컴파일 에러가 발생하여 실수를 방지해줍니다.
const _exhaustiveCheck: never = color;
return _exhaustiveCheck;
}
}
💡 요약 한눈에 보기
타입특징권장 사용 상황
| string, number, boolean | 일반적인 데이터 타입 | 가장 기본적으로 사용 |
| any | 타입 검사 안 함 | 외부 라이브러리 타입이 너무 복잡할 때 (임시) |
| unknown | 타입 확인 전까지 사용 제한 | API 응답 등 데이터 타입을 미리 알 수 없을 때 |
| never | 도달할 수 없는 지점 | 예외 발생, 무한 루프, 완벽한 조건 처리 검사 |
마치며
TypeScript의 타입 시스템은 여러분의 코드를 더 안전하고 견고하게 만들어줍니다. 특히 any 사용을 줄이고 unknown이나 구체적인 타입을 사용하는 습관을 들이는 것이 실력 향상의 지름길입니다!
반응형
'Frontend > Typescript' 카테고리의 다른 글
| 제네릭(Generics) 완벽 가이드: 유연하고 안전한 코드를 위한 마법 같은 도구 (0) | 2026.02.19 |
|---|---|
| 안전한 코딩을 위한 필수 코스: 함수 타이핑 (매개변수, 반환 타입, 옵셔널 파라미터) (0) | 2026.02.19 |
| TypeScript 인터페이스(Interface) vs 타입 별칭(Type Alias) 완벽 가이드 (0) | 2026.02.19 |
| 환경 설정 완벽 가이드: Node.js 환경에서 tsconfig.json 설정법 및 개발 환경 구축 (0) | 2026.02.18 |
| 왜 TypeScript인가?: JS의 한계와 TS가 가져다주는 안정성 (0) | 2026.02.18 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 협력
- HTML
- CSS
- prompt engineering
- LLM
- 카카오
- 멀티모달
- 웹기초
- MSA
- It용어
- AI
- Javascript
- sLLM
- Nextjs
- HBM
- 구글
- java
- SSR
- on-device ai
- react
- TypeScript
- CSR
- 스마트안경
- 엣지컴퓨팅
- Rag
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
글 보관함