reactjs - 在打字稿中覆盖全局类型
问题描述
我正在使用两个第三方打字稿库。它们都使用 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)。但是,一次我只能选择单个库。谁能帮我实现这一目标?
解决方案
进入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
。
推荐阅读
- javascript - 如何使用 javascript 使表格的标题具有垂直的、有角度的文本?
- r - 如何在 R 中绘制特定的行和列
- javascript - 如何在材料表 React 的警报或控制台中获取查找值?
- python - Python - Pandas:获取列中特定值的行索引
- python - 为什么使用 time.sleep 时会出现“none”?
- java - 使用 Selenium 集线器和 Firefox 远程驱动程序无法将元素滚动到视图中
- python - “错误:selenium.common.exceptions.NoSuchElementException:消息
- c - 互斥锁可以在临界区锁定多少个变量?
- salesforce - 开发 Salesforce Commerce Cloud 墨盒装载订单
- sql-server - 如何增加 bcp 批处理负载?