覆盖打字稿中的全局类型

Overriding global type in typescript

我正在使用两个第三方打字稿库。它们都使用 Window 接口公开相同命名的全局变量。他们都在该变量上公开了不同的方法。 例如:

第一个图书馆有 abc.d.ts 其中将测试变量公开为全局

global {
  interface Window {
    Test: {
      A: () => void;
      B: () => void;
      C: () => void;
    };
  }
}

第二个库有 pqr.d.ts,它也将 Test 变量公开为全局变量,

global {
  interface Window {
    Test: {
      P: () => void;
      Q: () => void;
      R: () => void;
    };
  }
}

我想同时使用这两个库及其提供的所有函数(A、B、C、P、Q 和 R)。但是,有一次我只能选择单个库。 谁能帮我实现这个目标?

Test移动到它自己的界面中。这将允许您根据需要进行扩展。所以:

// 库 1:

global {
  interface Test {
      A: () => void;
      B: () => void;
      C: () => void;
  };
  interface Window {
    Test: Test
  }
}

// 库 2:

global {
  interface Test {
      P: () => void;
      Q: () => void;
      R: () => void;
  };
  interface Window {
    Test: Test
  }
}

更多

本质上,您的界面 Test 将以与预定义界面 Window 相同的方式进行扩展。