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

如何在package.json中配置浏览器与Node环境分离的.d.ts类型定义?

为浏览器和Node环境分别定义类型的实现方案

完全可行,TypeScript 4.7及以上版本支持通过package.json的条件导出(Conditional Exports)为不同环境指定专属类型文件,具体实现步骤如下:

  • 拆分类型文件:将浏览器专属类型定义到dist/index.browser.d.ts,Node环境专属类型定义到dist/index.node.d.ts,通用类型可抽离为公共文件复用。
  • 修改package.json的exports配置:增加browser和node环境条件字段,分别指定对应环境的JS产物和类型文件:
"exports": {
  ".": {
    "import": "./dist/index.es.js",
    "require": "./dist/index.cjs",
    "browser": {
      "import": "./dist/index.browser.es.js",
      "require": "./dist/index.browser.cjs",
      "types": "./dist/index.browser.d.ts"
    },
    "node": {
      "import": "./dist/index.node.es.js",
      "require": "./dist/index.node.cjs",
      "types": "./dist/index.node.d.ts"
    },
    "types": "./dist/index.d.ts" // 可选:兜底通用类型
  }
}
  • 环境匹配逻辑:TypeScript会根据当前项目的编译环境(比如tsconfig.json的target/moduleResolution配置,或打包工具的环境标识)自动选择对应环境的类型文件。例如浏览器环境下会优先读取browser字段下的类型,Node环境则加载node字段对应的类型。

注意:如果代码实现本身也分环境,需要同步打包出对应环境的JS产物,确保类型与实现一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:46:01