타입스크립트 이해하기: 추론, 타입, 제네릭
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- 초보 개발자 및 타입스크립트 학습자
- 타입 추론, 제네릭, 인터페이스 등 핵심 개념을 이해하고자 하는 개발자
- 난이도: 초보자 수준 (기초 문법 및 개념 설명)
핵심 요약
- 타입 추론 :
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: number
와y: string
을 동시에 가진 객체 정의
5. 제네릭
function identity
처럼(value: T): T T
를 사용해 여러 타입에 대한 함수 정의class Box
처럼 클래스에도 제네릭 적용 가능{ constructor(public content: T) { } } - 제네릭은 유연성과 타입 안전성 동시에 보장
결론
- 인터페이스는 객체 구조 정의에, 타입 별칭은 유니언/복잡 타입 정의에 적합
- 제네릭과 타입 추론은 코드 반복 최소화 및 유연성 강화에 효과적
- 초보자는 인터페이스로 시작하고, 복잡한 타입 정의 시 타입 별칭 사용 권장