-
(TypeScript) - 인터페이스 선언 합치기개발/TypeScript 2025. 8. 25. 11:46반응형
■ 인터페이스 선언 합치기 (declaration merging)
interface Person { name: string } interface Person { age: number }인터페이스는 타입과는 다르게 동일한 이름으로 두 개의 인터페이스를 선언해도 문제가 되지 않는다.
동일한 이름으로 정의한 인터페이스들이 결국 합쳐지고, 이를 선언 합침이라 한다.
const person: Person = { name: '', age: 13, };따라서 인터페이스를 따라 만든 객체도 2개의 프로퍼티를 가지게 되는 것이다.
interface Person { name: string; } interface Person { name: number; //충돌! age: number; }동일한 프로퍼티를 재정의하는데 타입을 달리하면 충돌이 일어나 오류가 발생한다.
interface Person { name: string; } interface Person { name: 'string'; // 스트링 리터럴 불가! string 만 가능 age: number; }선언 합침에서는 이전 인터페이스 확장과 다르게 재정의할때 타입이 일치해야 한다.
- 모듈 보강 (예시)
interface Lib { a: number; b: number; } const lib: Lib = { a: 1, b: 2, c: 3, };이런 선언 합침은 보통 모듈을 보강할 때 많이 사용한다.
다음 코드에서처럼 라이브러리에 새로운 프로퍼티 추가가 필요한 경우 보통 라이브러리 자체에 추가가 어렵다.
따라서 선언 합침을 통해 다시 재정의 해줌으로써 우리가 필요한 c 프로퍼티를 넣을 수 있다.
반응형'개발 > TypeScript' 카테고리의 다른 글
(TypeScript) - 타입스크립트 클래스 (1) 2025.08.26 (TypeScript) - 자바스크립트 클래스 (0) 2025.08.25 (TypeScript) - 인터페이스 확장 (0) 2025.08.25 (TypeScript) - 인터페이스 (0) 2025.08.25 (TypeScript) - 사용자 정의 타입 가드 (커스텀 타입 가드) (0) 2025.08.22