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

如何让tsc允许向全局window对象赋值自定义属性

仅关闭window对象属性校验的方案

你可以选择两种粒度的关闭方式,都不会影响tsconfig里其他全局校验规则:

  • 单语句临时关闭:给当前操作的window做类型断言即可,仅作用于当前行:
    // TS/JS环境都可用
    (/** @type {any} */ (window)).Blah = '自定义值'
    
  • 全局关闭window所有自定义属性校验:在项目根目录新增任意后缀为.d.ts的声明文件,写入以下内容:
    interface Window {
      [key: string]: any
    }
    
    配置后tsc会跳过所有window自定义属性的存在性校验,其他类型校验逻辑正常生效。

保留类型校验、仅使用标准JS语法的方案

完全不需要使用TS专属语法,tsc原生支持识别标准JS中的JSDoc注释来推导类型,你可以通过JSDoc声明window的自定义属性:

单文件临时声明

只需要在赋值/使用window自定义属性的位置上方加对应JSDoc注释即可:

// 声明Blah为字符串类型,赋值错误时tsc会正常抛出类型错误
/** @type {{ Blah: string }} */
(window).Blah = '测试内容'

全局生效声明

如果需要全项目识别该自定义属性,在项目入口JS文件的顶部添加如下JSDoc注释即可,不需要额外创建TS声明文件:

/**
 * @typedef {object} CustomWindow
 * @property {string} Blah - 你自定义的属性,可修改为需要的类型
 * @property {number} OtherCustomProp - 可添加多个自定义属性
 */

// 后续使用时加一行断言注释
/** @type {CustomWindow & Window} */
(window).Blah = '全局生效的属性'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 10:00:05