선언 병합 (Declaration Merging)
동일한 이름으로 선언된 여러 개의 인터페이스(Interface)나 네임스페이스가 덮어씌워지지 않고 하나로 합쳐지는(Merge) 타입스크립트만의 고유한 성질입니다.
🧩 조각 모음 (Declaration Merging)
타입 앨리어스(`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!")
};