Bau*_*lla 4 node.js npm typescript
我有一个用 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 {
return new InternalClass();
}
Run Code Online (Sandbox Code Playgroud)
任何关于如何做好这件事的想法将不胜感激。
我这样做的方法是通过控制 npm 包所公开的内容。
例如,如果我的package.json看起来像这样:
{
....
"main": "dist/index.js",
"typings": "typings/index.d.ts",
....
}
Run Code Online (Sandbox Code Playgroud)
然后在相应的index.ts我可以手动控制将作为包的一部分公开(导出)的内容。
export * from "./lib/Helper";
export * from "./lib/Log";
import * as M from "./lib/Maps";
export {M as Maps};
Run Code Online (Sandbox Code Playgroud)
如果我有模块/类,我不希望在“外部”访问 - 我只是不将其导出为index.ts或其引用的子级的一部分。这并不禁止我在同一个包中导入和使用它。
| 归档时间: |
|
| 查看次数: |
2090 次 |
| 最近记录: |