타입스크립트 핵심 개념: 추론, 타입, 제네릭, 인터페이스

타입스크립트 이해하기: 추론, 타입, 제네릭

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

  • 초보 개발자 및 타입스크립트 학습자
  • 타입 추론, 제네릭, 인터페이스 등 핵심 개념을 이해하고자 하는 개발자
  • 난이도: 초보자 수준 (기초 문법 및 개념 설명)

핵심 요약

  • 타입 추론 : let count = 10;처럼 값만 할당하면 타입이 자동으로 number로 추론됨
  • 타입 별칭 vs 인터페이스 : type ID = number | string;은 복합 타입 정의에 적합, interface Person { name: string; age: number; }는 객체 구조 정의에 적합
  • 유니언/인터섹션 타입 : type Status = "success" | "error";는 유니언, type Point = A & B;는 인터섹션 타입 활용
  • 제네릭 : function identity(value: T): T처럼 T를 사용해 타입이 동적으로 결정되는 유연한 코드 작성 가능

섹션별 세부 요약

1. 타입 추론

  • let message = "Hello";처럼 명시적 타입 없이 값 할당 시 string 타입으로 자동 추론
  • let items = [];any[]로 추론되지만 let items: number[] = [];처럼 명시적 타입 지정 가능
  • 추론은 코드 간결성과 타입 안전성 동시에 유지

2. 타입 별칭

  • type ID = number | string;처럼 복합 타입 정의 가능 (유니언, 튜플 등)
  • type User = { name: string; age: number };처럼 객체 구조를 별칭으로 재사용
  • 별칭은 선언 후 수정 불가능 (인터페이스와 차이점)

3. 인터페이스

  • interface Person { name: string; age: number; }처럼 객체 구조 정의 가능
  • interface Employee extends Person { role: string; }처럼 인터페이스 확장 가능
  • 클래스는 class User implements Person처럼 인터페이스를 구현 가능

4. 유니언/인터섹션 타입

  • type Status = "success" | "error";state 변수가 여러 타입 중 하나를 가질 수 있음
  • type Point = A & B;x: numbery: string을 동시에 가진 객체 정의

5. 제네릭

  • function identity(value: T): T처럼 T를 사용해 여러 타입에 대한 함수 정의
  • class Box { constructor(public content: T) { } }처럼 클래스에도 제네릭 적용 가능
  • 제네릭은 유연성과 타입 안전성 동시에 보장

결론

  • 인터페이스는 객체 구조 정의에, 타입 별칭은 유니언/복잡 타입 정의에 적합
  • 제네릭타입 추론은 코드 반복 최소화 및 유연성 강화에 효과적
  • 초보자는 인터페이스로 시작하고, 복잡한 타입 정의 시 타입 별칭 사용 권장