`d.ts` 파일 내에서`export`를 사용하는 것이 합리적입니까?

Aug 06 2020

내 앱에서 전 세계적으로 사용되는 유형에 대한 파일을 만들려고합니다.

reduxState.d.ts

declare namespace MyProject {
  type Type1 = someType;
  interface SomeInterface {
    someProperty: someType
  }
}

위의 코드를 사용하면 이미 namespace내 프로젝트 파일에서 나와 해당 구성원을 볼 수 있습니다.

그렇다면 위 코드와 멤버를 export위해 사용하는 다음 코드의 차이점은 무엇 namespace입니까?

declare namespace MyProject {
  export type Type1 = someType;
  export interface SomeInterface {
    someProperty: someType
  }
}

둘 다 잘 작동하는 것 같습니다. 차이점은 무엇입니까?

에서: https://www.typescriptlang.org/docs/handbook/namespaces.html#namespacing

여기서 인터페이스와 클래스 가 네임 스페이스 외부에 표시 되기를 원하기 때문에 내보내기로 시작합니다.

DOC에서 발췌 한이 부분에서는 파일이 아닌 a namespace내에서 선언 된를 참조하는 것으로 보입니다 . 이 경우에 필요한 이유 입니까?tsd.tsexport

파일 export내 에서 사용하는 것이 합리적 d.ts입니까?

답변

1 Zer0 Aug 06 2020 at 18:50

*.d.ts파일은 정의를위한 것이며 런타임시 완전히 무시됩니다. 라이브러리 등이 있기 때문에 JS 코드를 작성하는 경우 내보내기 키워드를 사용하는 것이 좋습니다. 이렇게하면 다른 사용자가 코드에서 사용할 수있는 내용을 더 쉽게 볼 수 있기 때문입니다. 수출, 분명히 다른 곳에서 가져올 수 없습니다).

이제 유스 케이스 : 네임 스페이스에서 내 보낸 모든 항목을 외부에서 독립적으로 사용할 수 있습니다. 당신이 뭔가를 할 수 있다는 의미

const obj: MyProject.SomeInterface = { someProperty: 20 };

*.d.ts파일이 아닌 *.ts파일을 사용 하고 있기 때문에 인터페이스 만 내보내는 한 아무런 차이가 없습니다. 컴파일 타임에 생략 될 수 있기 때문입니다.

마지막 참고 사항 : *.d.ts파일을 사용하면 전체 프로젝트에서 항목을 볼 수 있지만 여기에서 함수 또는 유사한 기능을 가져올 계획이라면 당연히 먼저 가져와야합니다.