首页 > 解决方案 > 在打字稿中覆盖全局类型

问题描述

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

第一个库有 abc.d.ts 暴露,测试变量为全局

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

第二个库有 pqr.d.ts,它还将测试变量公开为全局变量,

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

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

标签: reactjstypescriptglobal-variablesreact-typescript

解决方案


进入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


推荐阅读