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

如何在基础包扩展Window接口并让消费包识别其类型定义

解决Package A扩展Window类型无法被Package B识别的问题
  • 先把Package A的类型配置做对
    首先得在Package A的package.json里加types字段,明确指向你的全局类型定义文件。比如你的global.d.ts在src/typings下,就这么写:

    {
      "types": "./src/typings/global.d.ts"
    }
    

    要是你把代码打包到了dist目录,就改成打包后的路径。另外,Package A的tsconfig.json里,include数组得包含这个类型文件,避免编译时被忽略:

    {
      "include": ["src/**/*", "src/typings/**/*.d.ts"]
    }
    
  • 让Package B能读到类型
    要是Package B的tsconfig.json里配置了types数组,TypeScript只会加载数组里指定的类型,这时候得把Package A加进去:

    {
      "compilerOptions": {
        "types": ["package-a"]
      }
    }
    

    要是没配types数组,只要Package A的package.json里types字段正确,TypeScript会自动扫描依赖的类型,不用额外配置。

  • 检查类型文件的模块设置
    你现在的global.d.ts里有export {};,这个是对的——必须把文件变成模块,才能扩展全局的Window接口。别在Package A的tsconfig.json的exclude里把这个文件排除掉。

  • 本地开发/发布的额外检查
    要是用npm link或者yarn link做本地调试,TypeScript有时候会识别不到链接包的类型,这时候可以在Package B的tsconfig.json里手动加类型路径:

    {
      "compilerOptions": {
        "typeRoots": ["./node_modules/@types", "./node_modules/package-a/src/typings"]
      }
    }
    

    要是发布到npm,得确保类型文件被包含在发布包里,在Package A的package.json的files数组里加上路径:

    {
      "files": ["src", "dist", "src/typings/global.d.ts"]
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 21:43:14