TypeScript中猴子补丁的解决办法

Published on
Reading time
2 min read

什么是猴子补丁

猴子补丁是一种在运行时动态修改类或模块的方法。通过猴子补丁,我们可以在程序运行时向现有类或模块中插入、修改或删除方法和属性。

解决方案

此时你想给window挂一个属性,但是ts肯定会直接报错,然后又不想用any,此时可以

typescriptEavan.dev
declare global {
  interface Window {
    name: string
  }
}

如果你感觉这样会污染到全局

还可以用局部类型的方式

typescriptEavan.dev
type MyWindow = typeof window & {
  name: string
}

但是这样操作使用的时候就需要用as去断言新的window了

注意事项

还有一个注意事项就是尽量给你添加的属性一个 undefined 的可能,否则有可能会造成一些不必要的错误

  1. 兼容性问题:猴子补丁可能导致未来代码或库更新时的兼容性问题。

  2. 维护成本高:过度使用猴子补丁会增加代码的复杂度和维护成本。

  3. 隐藏 bug:不当使用可能会隐藏或引入新的 bug。