`d.ts` 파일 내에서`export`를 사용하는 것이 합리적입니까?
내 앱에서 전 세계적으로 사용되는 유형에 대한 파일을 만들려고합니다.
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입니까?
답변
*.d.ts파일은 정의를위한 것이며 런타임시 완전히 무시됩니다. 라이브러리 등이 있기 때문에 JS 코드를 작성하는 경우 내보내기 키워드를 사용하는 것이 좋습니다. 이렇게하면 다른 사용자가 코드에서 사용할 수있는 내용을 더 쉽게 볼 수 있기 때문입니다. 수출, 분명히 다른 곳에서 가져올 수 없습니다).
이제 유스 케이스 : 네임 스페이스에서 내 보낸 모든 항목을 외부에서 독립적으로 사용할 수 있습니다. 당신이 뭔가를 할 수 있다는 의미
const obj: MyProject.SomeInterface = { someProperty: 20 };
*.d.ts파일이 아닌 *.ts파일을 사용 하고 있기 때문에 인터페이스 만 내보내는 한 아무런 차이가 없습니다. 컴파일 타임에 생략 될 수 있기 때문입니다.
마지막 참고 사항 : *.d.ts파일을 사용하면 전체 프로젝트에서 항목을 볼 수 있지만 여기에서 함수 또는 유사한 기능을 가져올 계획이라면 당연히 먼저 가져와야합니다.