sourcetip

Typescript가 클래스 및 인터페이스를 공개하기 위해 키워드 export를 사용하는 이유는 무엇입니까?

fileupload 2023. 3. 19. 18:26
반응형

Typescript가 클래스 및 인터페이스를 공개하기 위해 키워드 export를 사용하는 이유는 무엇입니까?

Typescript를 만지작거리면서 모듈 내의 클래스(네임스페이스로 사용)를 다른 클래스에서 사용할 수 없다는 것을 깨달았습니다.export다음과 같은 키워드를 사용합니다.

module some.namespace.here
{
   export class SomeClass{..}
}

이제 위의 코드를 다음과 같이 사용할 수 있습니다.

var someVar = new some.namespace.here.SomeClass();

그런데 왜 이 키워드를 사용하는지 궁금해서public메서드 또는 속성을 외부에서 액세스할 수 있어야 함을 나타내기 위해 메서드레벨에서 사용되는 키워드입니다.그렇다면 이 메커니즘을 사용하여 클래스나 인터페이스 등을 외부에서 볼 수 있도록 하는 것은 어떨까요?

이렇게 하면 다음과 같은 코드가 생성됩니다.

module some.namespace.here
{
   public class SomeClass{..}
}

가장 큰 이유는export는 ECMAScript 계획과 일치합니다."public"이 아닌 "export"를 사용했어야 한다고 주장할 수 있지만, "export/private/protected"가 액세스 수식어의 부적절한 세트인 것을 제외하면, 두 가지 사이에는 미묘한 차이가 있다고 생각합니다.

TypeScript에서 클래스 멤버 마킹public또는private는 생성된 JavaScript에 영향을 주지 않습니다.이것은 단순히 설계/컴파일 시간 도구이며, TypeScript 코드가 접근해서는 안 되는 것에 대한 접근을 중지하기 위해 사용할 수 있습니다.

를 사용하여export키워드를 지정하면 JavaScript는 내보낸 항목을 모듈에 추가하기 위한 행을 추가합니다.이 예에서는 다음과 같습니다.here.SomeClass = SomeClass;.

개념적으로 볼 때 관리 대상인public그리고.private단순한 툴링에 불과하지만,export키워드를 지정하면 출력이 변경됩니다.

Steve Fenton의 답변에 추가할 몇 가지 사항:

  • export (최상위 레벨인지 아닌지에 따라) 이미2개의 다른 것을 의미합니다.세 번째를 의미하는 것은 추가하는 것보다 나쁠 수 있습니다.public/private
  • 도입을 용이하게 하는 것은 결코 아닙니다.또한 복잡성이 증가하여publicexport사소합니다.키워드는 이미 많이 바뀌었습니다.어렵지 않아요
  • ES6 클래스 제안에 맞추기 위해서는 클래스 멤버의 기본 가시성이 퍼블릭이어야 합니다.따라서 "not public"을 나타내는 키워드가 필요합니다.에 대한 적절한 반의어는 없다.export(unexport? ) 。private논리적인 선택입니다.일단 하면private를 선택하지 않는 것은 다소 미친 짓이 될 것이다.public그 대항마로서
  • 사용방법export내부 모듈의 가시성을 수정하는 것이 ES6 모듈과의 최적의 정렬입니다.

언급URL : https://stackoverflow.com/questions/15760462/why-does-typescript-use-the-keyword-export-to-make-classes-and-interfaces-publ

반응형