我有一个用 TypeScript 编写的 NPM 包,旨在与 Node.js 应用程序一起使用。我在这个包中有一些类,它们的方法仅供内部使用,尽管我无法将它们标记为私有,因为它们被包内的其他组件使用。为了解决这个问题,我不从项目中导出该类,并且当我将类的实例返回给调用者时,我将其类型强制转换为仅具有可公开访问的方法的接口。
这工作正常,但如果我想将我的项目分成更小的文件,我怎样才能做到这一点而不被迫导出我的类,并冒滥用我的 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
}
}
Run Code Online (Sandbox Code Playgroud)
文件:external.ts
import { InternalClass } from "./internal";
export interface ExternalInterface {
sharedMethod(): void;
// protectedMethod is not available outside the package
}
export function makeInterface(): ExternalInterface { …Run Code Online (Sandbox Code Playgroud)