동일한 이름으로 선언된 여러 개의 인터페이스(Interface)나 네임스페이스가 덮어씌워지지 않고 하나로 합쳐지는(Merge) 타입스크립트만의 고유한 성질입니다.
타입 앨리어스(`type`)는 불가능하지만, 인터페이스(`interface`)는 가능합니다.외부 라이브러리나 전역 객체(`window`)에 내가 원하는 커스텀 속성을 추가할 때 필수적입니다.
// 1. 선언 병합의 기본 원리 interface Car { brand: string; } // 나중에 동일한 이름으로 다시 선언하면, 기존 인터페이스에 속성이 "추가"됩니다. interface Car { speed: number; } const myCar: Car = { brand: "Tesla", speed: 250 // 두 인터페이스가 합쳐졌기 때문에 둘 다 필수 속성입니다. }; // 2. 실무 활용 (전역 Window 객체 확장하기) // 브라우저의 Window 객체에 나만의 커스텀 프로퍼티를 안전하게 추가합니다. interface Window { myCustomPlugin: { init: () => void; }; } window.myCustomPlugin = { init: () => console.log("Plugin Loaded!") };