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

Angular 8升级至9(无Material)index.d.ts模块声明问题

我来帮你搞定这个Angular 9升级后的模块声明问题,下面是几个经过验证的解决方案,你可以逐个尝试:

解决方案一:检查index.d.ts的配置与位置

Angular 9启用的Ivy编译器对类型文件的解析规则更严格,首先确保你的类型声明文件被正确识别:

  • 确认index.d.ts放在src目录下(或者子目录,但要保证被tsconfig.json包含)
  • 打开tsconfig.json,检查include数组是否包含了你的类型文件:
    "include": [
      "src/**/*.ts",
      "src/**/*.d.ts"
    ]
    
  • 对于googlemaps模块,因为你已经安装了@types/googlemaps,可以尝试简化声明(甚至可以移除自定义声明,让TypeScript自动加载@types包):
    // 如果仍需自定义声明,可改为更贴合@types的写法
    declare module 'googlemaps' {
      export = google;
    }
    
解决方案二:完善detect-resize的类型声明

空的declare module在Ivy下可能不被认可,你需要补充模块的导出内容:

  • 如果你知道detect-resize的具体API,比如它默认导出一个监听函数,可以这样写:
    declare module 'detect-resize' {
      export default function addResizeListener(el: Element, callback: () => void): () => void;
      // 若有其他导出,继续补充
    }
    
  • 如果暂时不清楚具体类型,可以用any过渡(不推荐长期使用,但能快速解决构建问题):
    declare module 'detect-resize' {
      const ResizeDetector: any;
      export default ResizeDetector;
    }
    
解决方案三:调整TypeScript的严格模式配置

Angular 9默认开启了更严格的TypeScript检查,你可以尝试暂时调整配置来排查问题:

  • 打开tsconfig.json,修改strict相关选项:
    // 临时关闭全严格模式(不推荐长期使用)
    "strict": false,
    // 或者单独关闭模块解析严格性
    "strictModuleResolution": false
    
    注意:这只是临时排查手段,最终还是建议修复类型声明以符合严格模式要求。
解决方案四:查找并安装社区类型包

先检查npm上是否有detect-resize的官方/社区类型包:

  • 执行以下命令安装(如果存在的话):
    npm install @types/detect-resize --save-dev
    
    安装完成后,你可以移除自己写的declare module 'detect-resize',让TypeScript自动加载这些类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 15:48:14