AI + Career

✅ TypeScript를 사용하는 이유와 장단점은?

octo54 2025. 4. 15. 11:25
반응형

✅ TypeScript를 사용하는 이유와 장단점은?

“왜 TypeScript를 쓰시나요?” 이 질문은 프론트엔드 개발 면접에서 거의 빠지지 않는 질문입니다.
단순히 “정적 타입 언어라서요”를 넘어서, 협업, 리팩토링, 실무 유지보수 관점에서 "왜" 써야 하는지, 언제 쓰면 효과적인지까지 설명할 수 있어야 합니다.

이번 글에서는 TypeScript의 기술적 강점, 실무 경험 기반 장단점, 그리고 현실적인 선택 기준을 함께 정리해보겠습니다.


📌 1. TypeScript란?

TypeScript는 JavaScript에 타입 시스템을 추가한 정적 타입 언어입니다.
컴파일 시점에서 오류를 잡고, 개발 도구의 자동완성(Autocomplete), 코드 탐색(Jump to Definition) 등을 가능하게 합니다.

function greet(name: string): string {
  return `Hello, ${name}`;
}

greet(42); // ❌ 컴파일 에러 발생

JavaScript에서는 위 코드가 런타임까지 아무런 오류 없이 진행되지만,
TypeScript는 개발 중에 에러를 인지하게 해 줍니다.


📌 2. 왜 사용하는가? – 실무의 관점

🎯 1) 대규모 프로젝트에서 유지보수가 쉬움

경험: 6개월 이상 진행된 프로젝트에서 타입 없이는 API 스펙이 헷갈리고, 버그 추적이 어려움

→ TypeScript를 도입하면서 자동 완성과 타입 추론이 코드 신뢰성을 확보해 줌

type User = {
  id: number;
  name: string;
};

function getUser(id: number): Promise<User> { ... }

// 자동완성: user.id, user.name 등

🎯 2) 협업 시 의사소통 비용 절감

  • 타입 정의는 일종의 명세서(Contract) 역할을 하여, 팀 간 인터페이스 오류를 줄여줍니다.
  • API 호출, 컴포넌트 props, 유틸 함수 등을 명확하게 정의할 수 있음.

🎯 3) 리팩토링이 쉬움

  • 타입 시스템 덕분에 대규모 리팩토링 시에도 IDE가 오류를 알려줌
  • "불안해서 손 못 대는 코드"를 줄여줌

📌 3. TypeScript의 장단점

반응형

✅ 장점

항목 설명

정적 타입 검사 컴파일 시점 오류 감지로 안정성 증가
IDE 지원 강화 자동완성, 타입 추론, 네비게이션
협업 효율 타입으로 명세 공유
리팩토링 용이 타입 기반으로 안전한 구조 변경 가능
문서화 효과 타입 자체가 인터페이스 명세 역할 수행

❌ 단점

항목 설명

학습 비용 타입 시스템, 제네릭, 유틸 타입 등 학습 필요
개발 속도 저하 초반에는 타입 선언 작성 시간이 추가됨
라이브러리 호환성 이슈 일부 JS 라이브러리의 타입 정의가 부실할 수 있음
초기 설정 부담 tsconfig, 타입 선언 파일 설정 필요

📌 4. 실무 적용 사례

🧪 문제 상황

API 응답 객체를 구조분해할 때 key 오타로 인해 런타임 에러 발생
(예: res.data.usernmae ← 오타로 인해 undefined)

✅ 해결

타입을 명시하여 IDE에서 오타를 즉시 탐지

interface User {
  id: number;
  username: string;
}

const user: User = res.data;
console.log(user.username); // 자동완성 지원, 오타 방지

📌 5. 도입 시기와 전략

상황 추천 여부

개인 토이 프로젝트 선택적 (빠른 개발 우선 시 JS도 무방)
팀 프로젝트 적극 추천 (협업 + 유지보수 용이)
API 기반 프로젝트 필수! API 스펙 정리가 중요
리팩토링 필요 프로젝트 적극 추천 (타입으로 리스크 최소화)

📌 면접 답변 Tip

TypeScript는 코드의 명확성과 유지보수성을 높여주는 정적 타입 언어입니다.
실무에서는 타입을 명시함으로써 협업 효율을 높이고, 버그를 사전에 방지하며, 리팩토링 시 리스크를 줄이는 데 큰 도움이 됩니다.
특히 API 스펙이 명확하지 않거나, 대규모 프로젝트에서 개발자가 자주 바뀌는 상황에서는 TypeScript가 프로젝트 생명줄이 될 수 있습니다.



TypeScript,정적타입,JavaScript대비,프론트엔드면접,협업효율,코드유지보수,리팩토링,타입시스템,실무도입사례,면접대비