TypeScript如何设置文件私有Interface且避免全项目改导入导出?
问题1:实现接口“私有”的最简单方案
你不需要额外添加特殊修饰符,只要在当前文件中**仅导出SomeClass,不导出SomeInterface**即可:
// 导出类,允许外部文件访问 export class SomeClass { //... } // 不导出接口,默认仅当前文件可访问 interface SomeInterface { //... }
TypeScript遵循ES模块规范:只要文件顶层存在import/export语句,该文件就会被识别为独立模块,所有未显式导出的顶层声明都属于文件私有作用域,外部文件无法访问,天然满足你要的接口“私有”需求。
问题2:导出类后能否避免其他文件适配import语法
可以,你可以通过将导出的类挂载到全局对象的方式,保留原有全局调用的用法,不需要修改其他引用文件的代码:
- 浏览器/Node.js 跨环境通用写法:直接挂载到
globalThis,同时通过declare global补充全局类型声明,避免TypeScript类型报错:
export class SomeClass { //... } interface SomeInterface { //... } // 挂载到全局对象 globalThis.SomeClass = SomeClass; // 补充全局类型声明 declare global { var SomeClass: typeof SomeClass; }
修改完成后,其他原本直接全局调用SomeClass的文件不需要做任何改动,依然可以正常使用。
内容的提问来源于stack exchange,提问作者user1325179
相关产品推荐
相关产品推荐

