더북(TheBook)

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'.
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.