如何在 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 的方法,能够在严格模式下工作。