Avatar ·

如何在 TypeScript 中显式向 window 对象添加新属性

大家好!我开始学习 TypeScript,在处理全局 `window` 对象时遇到了问题。 我需要向 `window` 添加一个自定义属性,例如,用于存储全局会话 ID 或一个标志,该标志可以从页面上的任何脚本访问。在普通的 JavaScript 中,我只需写: ```typescript window.myCustomProperty = 'hello world'; ``` 但在 TypeScript 中,这会导致编译错误: ``` Property 'myCustomProperty' does not exist on type 'Window & typeof globalThis'. ``` 我理解 TypeScript 是严格类型化的,`window` 默认没有这样的属性。我尝试了不同的方法:使用 `(window as any).myCustomProperty`,但这会破坏所有类型化。我尝试创建一个 interface,但不确定如何正确应用它。 请告诉我如何正确声明 `window` 的新属性,以便 TypeScript 不报错,同时保留类型化?我需要一个 production-ready 的方法,能够在严格模式下工作。