인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

[리뉴얼] 타입스크립트 올인원 : Part2. 실전 분석편

네임스페이스(namespace)

declare namespace vs namespace

작성

·

377

0

declare namespace JQuery {
...

namespace Ajax {

...

}

}

두가지 궁금한 부분이 있습니다.

  1. declare namespace를 쓰면 내부의 멤버들을 직접 export 하지 않아도 자동으로 모두 내보내지고 namespace만 쓸 경우엔 멤버들을 외부에 공개할려면 직접 export 해야하는걸로 아는데 이렇게 알고 있어도 될까요?

  2. 위 코드도 JQuery가 declare로 선언되었으니 외부에서 Ajax 네임스페이스에 접근가능하니 declare를 선언하지 않은걸로 봐도 될까요? 아니면 다른 이유가 더 있는걸까요?

답변 2

0

JQuery는 파일 외부에 선언이 따로 되어있다는 말씀이

@types/jquery에서 타입선언 말고 실제 jquery 라이브러리 안에서

var JQuery = { ... }; 식으로 구현된 걸 말씀하시는걸까요?

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 맞습니다. declare는 js 파일에 구현부가 있다는 의미입니다.

0

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

  1. 네 맞습니다. 다만 export를 생략하고싶냐 여부가 declare namespace와 namespace를 선택하는 결정적인 요인은 아닙니다. declare namespace는 앰비언트 선언으로 다른 js 파일에 실제 구현부가 있을 때 사용합니다.

  2. namespace Ajax는 그 파일 안에서 Ajax 네임스페이스의 구현부까지 구현을 한 것이고, declare namespace JQuery는 그 파일 외부에 JQuery 선언이 따로 되어 있을 것입니다.

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기