2.9.2 네임스페이스
인터페이스 병합에는 큰 단점이 있습니다. 바로 남이 만든 인터페이스와 의도치 않게 병합될 수 있다는 점입니다. 타입스크립트로 프로그래밍할 때는 다른 라이브러리를 설치해 사용하는 경우가 많습니다. 이때 다른 사람이 만든 인터페이스와 내 인터페이스의 이름이 우연히 겹칠 수 있는데, 이 경우 인터페이스가 병합되어 원하지 않은 결과를 낳게 됩니다.
이럴 때를 대비해 네임스페이스(namespace)가 있습니다. 네임스페이스는 다음과 같이 선언할 수 있습니다.
namespace Example {
interface Inner {
test: string;
}
type test2 = number;
}
const ex1: Example.Inner = {
test: 'hello',
}
// Namespace 'Example' has no exported member 'Inner'.
const ex2: Example.test2 = 123;
// Namespace 'Example' has no exported member 'test2'.