如何仅导出.d.ts文件中指定interface并限制其余接口外部访问?
解决方案
你遇到的情况是因为无顶层import/export的.d.ts文件会被TypeScript识别为全局声明文件,内部定义的所有类型默认全局可见,哪怕你没有显式导出。
推荐方案(最简洁)
只需要在config.d.ts末尾加一行export {},将文件标记为ES模块作用域即可,未显式导出的Node接口会自动变为文件私有,外部无法导入:
// config.d.ts export interface Config { NAV_STRUCTURE: Node[]; } interface Node { title: string; } // 新增此行,启用模块作用域 export {}
修改后,外部尝试导入Node接口时TypeScript会直接抛出导出不存在的报错。
可选方案(需保留全局声明时使用)
如果你需要保留文件的全局声明特性,也可以把私有类型封装到非导出的命名空间中:
// config.d.ts export interface Config { NAV_STRUCTURE: PrivateTypes.Node[]; } namespace PrivateTypes { export interface Node { title: string; } }
未导出的PrivateTypes命名空间仅在当前文件内部可访问,外部无法获取到内部的Node类型定义。
内容的提问来源于stack exchange,提问作者mannok
相关产品推荐
相关产品推荐

