TypeScript에서 type과 interface 차이와 선택 기준

개요 TypeScript에서 type과 interface는 겹치는 부분이 많지만 용도와 확장 방식이 다름 객체 구조 설계와 복잡한 타입 표현 중 무엇을 우선하느냐에 따라 선택 달라짐 핵심 차이 포인트 중심으로 정리 핵심 개념 type 타입 별칭 정의 수단 기본 타입, 유니언, 튜플, 교차 타입 등 복합 표현에 유리 선언 병합 불가 interface 객체의 구조 정의 수단 확장과 선언 병합 지원 주로 객체와 클래스와의 계약 정의에 사용 // type 별칭 최소 예시 type ID = number | string type Point = [number, number] type Person = { name: string } & { age: number } // interface 최소 예시 interface User { name: string; age: number } interface Employee extends User { employeeId: number }차이점과 동작 표현 범위 ...

January 9, 2026

TypeScript Record 제대로 이해하기 — 인덱스 시그니처와 맵드 타입 비교, 선택 기준

개요 Record<Key, Value>는 키와 값 타입을 고정해 객체 형태를 만드는 타입스크립트 유틸리티 타입임 인덱스 시그니처와 유사하지만 문자열 리터럴 유니온을 키로 직접 사용할 수 있고, 맵드 타입으로도 같은 효과를 낼 수 있음 핵심 개념과 정의 Record<Key, Value> 키 타입 Key, 값 타입 Value를 갖는 객체 타입 생성 인덱스 시그니처와의 차이 [key: string]: T 형태는 키 집합을 특정 리터럴 유니온으로 제한 불가 Record는 ‘A’ | ‘B’ 같은 리터럴 유니온을 키로 직접 지정 가능 맵드 타입과의 관계 { [K in Keys]: V }와 Record<Keys, V>는 구조적으로 동일한 결과를 만들 수 있음 간단 스니펫 ...

December 2, 2025

TypeScript Parameters 유틸리티 타입 개념과 안전한 활용

개념/배경 Parameters는 TypeScript가 제공하는 제네릭 유틸리티 타입으로, 특정 함수 타입의 매개변수 타입들을 튜플로 추출하는 데 사용됨 함수 래핑, 고차 함수, 어댑터 계층에서 기존 함수 시그니처를 재사용해 타입 안정성을 유지하고 중복 선언을 줄이는 목적에 적합함 문법 type Parameters<T extends (...args: any) => any> = T extends ( ...args: infer P ) => any ? P : never; T가 함수 타입이면 매개변수 목록을 튜플 타입 P로 추출 T가 함수 타입이 아니면 never 반환 추출 결과는 튜플이므로 인덱스 접근, 스프레드, 부분 적용 등 튜플 연산과 조합 가능 사용 예시 기본 추출 ...

November 1, 2025

TypeScript enum, const enum, as const 차이와 선택 기준

개요 TypeScript에서 enum, const enum, as const는 값 집합을 선언하고 타입으로 활용하기 위한 서로 다른 도구임 각 특성의 차이와 트레이드오프를 이해하면 가독성과 안정성을 챙기면서 번들 크기와 도구 호환성 문제도 피할 수 있음 enum 개념과 동작 열거형 타입을 선언하는 문법 숫자 기반과 문자열 기반 모두 지원 컴파일 결과로 양방향 매핑을 담은 JS 객체 생성 키로 값 조회, 값으로 키 역조회 가능 예시 enum BooleanType { False = 0, True = 1, }컴파일 결과는 즉시실행함수 형태로 양방향 맵 객체 생성됨 ...

October 21, 2025