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

Angular严格模式下如何正确访问对象上动态添加的属性?

报错原因

Angular严格模式默认开启了noImplicitAny校验规则,TypeScript的默认Window类型定义中未声明Prism属性,通过字符串索引访问window时无法推断属性类型,因此触发隐式any类型的报错。

可用解决方案

  • 方案1:快速类型断言(最便捷,适合临时使用)
    将window临时断言为any类型绕过检查,代码修改为:

    if ((window as any)['Prism']) {
      // 原有逻辑
    }
    
  • 方案2:扩展全局Window类型(最规范,适合长期维护的项目)
    在项目的全局类型声明文件(通常为src/typings.d.ts或任意*.d.ts全局声明文件)中添加如下定义:

    declare global {
      interface Window {
        // 如果你知晓Prism的具体类型,可以替换any为对应类型获得更好的类型提示
        Prism?: any;
      }
    }
    

    配置完成后直接使用if (window.Prism)即可,不会触发报错同时支持类型校验。

  • 方案3:单行忽略类型检查(不推荐,仅适合临时调试)
    在报错代码行上方添加忽略注释,强制跳过当前行的类型校验:

    // @ts-ignore
    if (window['Prism']) {
      // 原有逻辑
    }
    

内容的提问来源于stack exchange,提问作者Rafael de Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:54:03