TypeScriptTypeScript 기초강의 8개 중 1번째난이도 기초

TypeScript란? — 타입으로 안전한 JavaScript

발행 읽는 시간 약 1 분

  • TypeScript
  • JavaScript
  • 타입시스템
  • 정적타입

강의 소개

TypeScript가 왜 필요한지, JavaScript와 어떻게 다른지 이해합니다. 타입 시스템의 기본 개념과 TypeScript 개발 환경을 설정하는 방법을 배웁니다.

JavaScript의 한계#

JavaScript
// JavaScript — 런타임에서야 오류 발견
function greet(user) {
    return "안녕하세요, " + user.name + "님!";
}

greet({ name: "철수" });   // ✅ 정상
greet("철수");             // ❌ 런타임 오류: user.name is undefined
greet();                   // ❌ 런타임 오류: Cannot read properties of undefined

TypeScript는 이런 오류를 코드 작성 시점에 발견합니다.


TypeScript = JavaScript + 타입#

TypeScript
// TypeScript — 컴파일 시점에 오류 발견
interface User {
    name: string;
}

function greet(user: User): string {
    return `안녕하세요, ${user.name}님!`;
}

greet({ name: "철수" });   // ✅
greet("철수");             // ❌ 컴파일 오류: string은 User 타입이 아님
greet();                   // ❌ 컴파일 오류: 인자가 필요함

TypeScript가 주는 이점#

Diagram · Mermaid

개발 환경 설정#

Bash
# Node.js가 설치되어 있다고 가정

# TypeScript 전역 설치
npm install -g typescript

# 버전 확인
tsc --version
# Version 5.4.0

# 새 프로젝트
mkdir my-ts-project
cd my-ts-project
npm init -y

# TypeScript 설치
npm install -D typescript @types/node

# tsconfig.json 생성
npx tsc --init

tsconfig.json 기본 설정#

JSON
{
  "compilerOptions": {
    "target": "ES2022",           // 출력 JavaScript 버전
    "module": "commonjs",         // 모듈 시스템
    "strict": true,               // 엄격한 타입 검사
    "outDir": "./dist",           // 컴파일 출력 폴더
    "rootDir": "./src",           // 소스 폴더
    "esModuleInterop": true       // ES 모듈 호환
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

첫 TypeScript 파일#

TypeScript
// src/index.ts
const message: string = "Hello, TypeScript!";
console.log(message);

function add(a: number, b: number): number {
    return a + b;
}

console.log(add(1, 2));   // 3
// console.log(add("1", 2));  // ❌ 컴파일 오류
Bash
# 컴파일
npx tsc

# 실행
node dist/index.js

# 개발 중: ts-node로 바로 실행
npm install -D ts-node
npx ts-node src/index.ts

TypeScript 컴파일 과정#

Diagram · Mermaid

TypeScript는 런타임에 존재하지 않습니다. 타입 정보는 컴파일 후 제거됩니다.


JavaScript vs TypeScript#

TypeScript
// JavaScript
function calculatePrice(price, discount) {
    return price - price * discount;
}

// TypeScript
function calculatePrice(price: number, discount: number): number {
    return price - price * discount;
}

calculatePrice(10000, 0.1);    // ✅ 9000
calculatePrice(10000, "10%"); // ❌ 컴파일 오류

정리#

항목JavaScriptTypeScript
타입동적 (런타임 결정)정적 (컴파일 시 결정)
오류 발견런타임컴파일 타임
IDE 지원보통강력한 자동완성
학습 곡선낮음중간
대규모 프로젝트어려움적합

다음 편에서는 기본 타입 — TypeScript의 원시 타입, 배열, 튜플, 열거형을 배웁니다.

Follow · Ask · Work

이 글이 도움이 됐다면

짧은 작업 기록과 데모는 인스타그램에 올립니다. 만들고 싶은 것이 있다면 프로젝트 의뢰나 협업 제안도 편하게 보내 주세요.

글쓴이

파란여우

직접 만든 AI 앱·제품의 개발·배포를 공개하는 실전형 테크 크리에이터

파란여우 소개 Instagram @bluefox._.hi

이어서 보기

만들고 싶은 것이 있다면 프로젝트 의뢰로 알려 주세요.