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

构建TypeScript JSX库时global.d.ts未输出至build目录求助

全局类型文件global.d.ts未被编译输出到build文件夹的解决方案

问题原因

global.d.ts属于环境声明文件(Ambient Declaration),这类仅包含类型声明、无任何导出/导入语句的文件,TypeScript默认不会将其单独输出到outDir目录,但它的类型会在编译阶段被识别。若你的库需要使用者能访问这些全局类型(比如自定义JSX类型),需确保类型被正确纳入最终的类型分发文件中。

解决方案

方案1:将全局声明转为模块并导入到入口

修改src/types/global.d.ts,添加空导出使其成为模块,TypeScript会将其编译为独立的.d.ts文件输出到build目录:

export {};

declare global {
  // 你的全局类型定义

  namespace JSX {
    // 你的JSX类型定义
  }
}

在库入口文件(如src/index.ts)中导入该文件,确保使用者导入你的库时能加载这些全局类型:

import './types/global.d.ts';

执行npm run build后,可在build/types/目录下看到global.d.ts,且全局类型会正常生效。

方案2:用三斜杠引用合并类型到入口声明

若不想修改global.d.ts的结构,可在入口文件src/index.ts顶部添加三斜杠引用,让TypeScript将全局类型合并到输出的index.d.ts中:

/// <reference path="./types/global.d.ts" />

// 你的库代码导出逻辑

这种方式下,global.d.ts不会单独输出,但它的类型定义会被包含在build/index.d.ts中,使用者通过库的类型入口即可访问这些全局类型。

方案3:确认tsconfig配置有效性

检查tsconfig.build.json是否意外排除了global.d.ts:当前配置仅排除测试文件和src/dev,继承自tsconfig.json的include规则已覆盖该文件,无需调整。同时确保compilerOptions中的declaration为true(你的配置已开启),这是生成类型声明文件的必要条件。

验证

执行npm run build后:

  • 方案1:查看build/types/global.d.ts是否存在且内容正确。
  • 方案2:查看build/index.d.ts是否包含global.d.ts中的类型定义。

内容的提问来源于stack exchange,提问作者Riadh Adrani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:20:33