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
- 도입을 용이하게 하는 것은 결코 아닙니다.또한 복잡성이 증가하여
public
대export
사소합니다.키워드는 이미 많이 바뀌었습니다.어렵지 않아요 - 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
'sourcetip' 카테고리의 다른 글
Oracle의 여러 행에서 열 값을 연결하기 위한 SQL 쿼리 (0) | 2023.03.19 |
---|---|
오류: 리스트가 맵 유형의 하위 유형이 아닙니다. (0) | 2023.03.19 |
각도 정의TypeScript 및 $inject 메커니즘을 사용하는 JS 디렉티브 (0) | 2023.03.19 |
XAMPP를 사용한mysql에서 에러 2가 발생. (0) | 2023.03.19 |
테이블 프리픽스를 취득하다 (0) | 2023.03.19 |