You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:12:01