【问题标题】:Overriding global type in typescript在打字稿中覆盖全局类型
【发布时间】:2020-10-27 08:20:38
【问题描述】:

我正在使用两个第三方打字稿库。它们都使用 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)。但是,有一次我只能选择单个库。 谁能帮我实现这个目标?

【问题讨论】:

    标签: reactjs typescript global-variables react-typescript


    【解决方案1】:

    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 一样可扩展。

    【讨论】:

      猜你喜欢
      • 2017-08-16
      • 2020-05-26
      • 2018-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-19
      • 1970-01-01
      • 2018-02-07
      相关资源
      最近更新 更多