TypeScript 기초 - 타입 시스템과 기본 문법
2026-02-10
TYPESCRIPTBASICS
TypeScript는 JavaScript에 정적 타입 시스템을 추가한 언어입니다.
컴파일 시점에 타입 오류를 발견할 수 있어, 대규모 프로젝트에서 코드 안정성을 크게 향상시킵니다.
1. 기본 타입
let name: string = "kwkang"; let age: number = 30; let isActive: boolean = true; let items: string[] = ["a", "b", "c"]; let user: { name: string; age: number } = { name: "kwkang", age: 30 };
- 기본 타입:
string,number,boolean,null,undefined - 배열:
string[]또는Array<string> - 객체:
{ key: type }형태로 타입 정의
2. 타입 추론
let name = "kwkang"; // 타입: string (자동 추론) let age = 30; // 타입: number (자동 추론) // 명시적 타입 선언이 필요한 경우 let value: string | number; // 유니온 타입
- TypeScript는 대부분의 경우 타입을 자동으로 추론합니다.
- 명시적 타입 선언은 타입이 복잡하거나 추론이 어려울 때 사용합니다.
3. 인터페이스와 타입 별칭
// 인터페이스 interface User { id: number; name: string; email?: string; // 선택적 속성 } // 타입 별칭 type Status = "pending" | "approved" | "rejected"; // 인터페이스 확장 interface Admin extends User { role: "admin"; }
interface: 객체 구조를 정의할 때 주로 사용 (확장 가능)type: 유니온, 인터섹션 등 복잡한 타입 정의에 사용
4. 함수 타입
function greet(name: string): string { return `Hello, ${name}`; } // 화살표 함수 const add = (a: number, b: number): number => a + b; // 옵셔널 파라미터 function log(message: string, prefix?: string): void { console.log(prefix ? `${prefix}: ${message}` : message); }
- 함수 파라미터와 반환 타입을 명시할 수 있습니다.
void: 반환값이 없을 때 사용
5. 제네릭
function identity<T>(arg: T): T { return arg; } const result = identity<string>("hello"); const numberResult = identity<number>(42); // 제네릭 인터페이스 interface Container<T> { value: T; getValue(): T; }
- 제네릭으로 재사용 가능한 타입을 정의할 수 있습니다.
6. 실무 팁
- 점진적 적용: JavaScript 프로젝트에 점진적으로 TypeScript 도입 가능
- 엄격 모드:
strict: true옵션으로 타입 안정성 최대화 - 타입 정의 라이브러리:
@types/*패키지로 외부 라이브러리 타입 지원 - any 피하기:
any타입은 타입 안정성을 해치므로 최대한 피할 것
TypeScript는 "타입 안정성을 통해 런타임 에러를 줄인다"는 철학을 따릅니다.
초기 설정 비용이 있지만, 프로젝트가 커질수록 그 가치가 명확해집니다.
