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

如何在Turborepo中将全局可复用类型迁移至packages/types?

解决Turborepo全局Window类型迁移至packages/types后不生效的问题

问题根源

你手动导入global.d.ts的操作会让这个文件变成普通模块,而不是全局类型定义文件——TypeScript只会把不带export/import语句的.d.ts当作全局类型自动生效,一旦有导入导出,它就只会作用于当前模块,没法扩展全局的Window接口。

解决步骤

1. 调整packages/types里的全局类型文件

在packages/types下保留(或新建)global.d.ts,内容和之前一致,绝对不能加export或import语句:

interface Window {
    analytics: any;
}

2. 配置types包的package.json

给packages/types/package.json加上types字段,告诉TypeScript这个包的入口类型文件路径:

{
  "name": "@your-team/types", // 替换成你实际的包名
  "version": "0.0.1",
  "types": "./global.d.ts"
}

3. 让每个应用识别全局类型

在每个apps/*目录的tsconfig.json里,把你的types包加入compilerOptions.types数组:

{
  "compilerOptions": {
    // 其他原有配置不变
    "types": ["@your-team/types"]
  }
}

4. 禁止手动导入类型文件

彻底删掉应用里所有类似import '@your-team/types/global.d.ts'的语句——只要配置到位,TypeScript会自动加载这个全局类型,无需手动引入。

验证方式

随便找一个应用的代码,直接编写window.analytics,TypeScript应该能正常识别该属性,不会抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:30:02