기본 콘텐츠로 건너뛰기

라벨이 TYPE인 게시물 표시

TypeScript type과 interface 차이: 선언 병합, 확장, 조합 기준으로 고르기

TypeScript type과 interface 차이: 선언 병합, 확장, 조합 기준으로 고르기 빠른 답 객체의 공개 구조를 점진적으로 확장해야 한다면 interface 가 읽기 쉽습니다. 유니온, 튜플, 조건부 타입처럼 타입 표현식을 조합해야 한다면 type 이 더 잘 맞습니다. interface 는 같은 이름으로 여러 번 선언하면 병합되지만, type 은 같은 스코프에서 중복 선언할 수 없습니다. 둘의 차이는 런타임 값의 차이가 아니라 타입 검사 단계에서 허용되는 선언과 오류의 차이입니다. 목차 한눈에 비교 둘 다 런타임 값이 아니라 타입 검사 규칙이다 interface가 강한 상황 type이 강한 상황 타입 검사를 엄격하게 보는 설정 extends와 intersection의 차이 흔한 오해 선택 기준 한눈에 비교 선언 병합 interface 는 같은 이름의 선언이 합쳐지고, type 은 중복 선언 시 오류가 납니다. 객체 확장 interface 는 extends 로 확장하고, type 은 인터섹션 & 으로 여러 타입을 조합합니다. 유니온 표현 type 은 "idle" | "loading" 같은 값의 집합을 직접 표현할 수 있고, interface 는 유니온 자체를 선언할 수 없습니다. 튜플과 계산 타입 type 은 튜플, 조건부 타입, 매핑된 타입, 유틸리티 타입과 함께 쓰기 좋습니다. 공개 API 보강 외부 라이브러리 타입이나 전역 객체를 보강해야 한다면 선언 병합이 가능한 interface 가 유리합니다. 의도하지 않은 확장 방지 타입 이름이 조용히 합쳐지면 곤란한 도메인 모델에는 중복 선언을 막는 type 이 더 예측 가능할 수 있습니다. 둘 다 런타임 값이 아니라 타입 검사 규칙이다 type 과 interface 는 모두 TypeScript의 타입 검사 단계에서 사용됩니다. JavaScript로 변환된 뒤에는 두 선언 모두 사라지고, 실행 중에는 실제 객체와 함수만 남습니다. 그래서 ...