0
我已經寫在打字稿的NPM包被designd用Node.js的應用程序一起工作。我在這個包裏有一些類只有內部使用的方法,儘管我不能將它們標記爲私有的,因爲它們被包中的其他組件使用。爲了解決這個問題,我不從項目中導出類,並且當我將該類的一個實例返回給調用者時,我將其轉換爲僅具有可公開訪問的方法的接口。打破打字稿NPM包成多個文件,而不會暴露內部組件
這工作得很好,但如果我想打破我的項目分成較小的文件,我怎麼能做到這一點,而無需被迫導出我的班,我的風險NPM模塊的濫用?
這裏是什麼,我試圖做一個簡單的例子:
文件:internal.ts
// Can I make this class not publicly accessible?
export class InternalClass {
constructor() {
}
public sharedMethod(): void {
// Accessible to users of the package
}
public protectedMethod(): void {
// Only for use within the package
}
}
文件:external.ts
import { InternalClass } from "./internal";
export interface ExternalInterface {
sharedMethod(): void;
// protectedMethod is not available outside the package
}
export function makeInterface(): ExternalInterface {
return new InternalClass();
}
對於如何任何想法做得很好,將不勝感激。
感謝。這看起來應該是訣竅。當我能夠嘗試實現這一點時,我會再次發表評論。 – Baudzilla
當我嘗試這種做法,我覺得我還需要包括來自內部的東西分型的文件,因爲index.d.ts本身不包含這些類型,而不是引用的其他分型的文件。因此,用戶可以通過直接引用文件來導入內部類型。例如: '進口{} InternalClass從「我的新公共管理模塊/ internal.d.ts」' – Baudzilla
我能夠通過拆分我所有的代碼放到公共/私人文件,以解決這個問題,只包括公共類型定義文件在NPM包中。由於類型定義文件未包含在私有文件中,因此無法在TypeScript中導入這些文件。不完全密封,但比將所有代碼放在單個文件中更好。 – Baudzilla