如何在d.ts文件中隐藏辅助定义,避免污染整个项目?
隐藏.d.ts中的辅助类型避免全局污染
当然可以隐藏这类仅用于内部的辅助类型,以下是两种实用方案:
方案一:将.d.ts转为模块文件
全局类型污染的核心原因是当前编写的是全局作用域的.d.ts文件,只要在文件中添加export {}将其标记为模块,内部未导出的类型就会被限制在模块作用域内,不会全局暴露。
示例代码:
// json-types.d.ts // 仅内部使用的辅助类型,不导出 type PrimitiveValues = string | number | boolean; // 需要对外暴露的类型,用export导出 export type PromitiveRecord = Record<string, PrimitiveValues>; // 标记文件为模块,避免全局作用域污染 export {};
这样外部代码只能导入PromitiveRecord,PrimitiveValues完全不可见。
方案二:用命名空间包裹辅助类型
如果需要在多个.d.ts文件中共享辅助类型但不想全局暴露,可以用命名空间封装:
// json-types.d.ts namespace InternalHelpers { export type PrimitiveValues = string | number | boolean; } // 对外暴露的类型引用命名空间内的辅助类型 export type PromitiveRecord = Record<string, InternalHelpers.PrimitiveValues>;
不过这种方式在现代TypeScript中不如模块方案推荐,模块系统更符合TS的模块化设计理念。
内容的提问来源于stack exchange,提问作者Tomáš Zato
相关产品推荐
相关产品推荐

