覆盖其他库扩展的 TypeScript 定义
我遇到过几种情况,其中一个库扩展了另一个库,特别是在我使用 React 和 Redux 时。
例如,假设我正在使用一个导出函数的 JS 库,该函数可以这样定义:
function dispatch(action:IAction):void;
interface IAction {
type: string;
}
我还使用另一个 JS 库来增强 dispatch 函数,以允许回调,这些回调可以这样定义:
function dispatch(action:IAction | IActionCallback):void;
interface IActionCallback {
(dispatch:IDispatch):void;
}
问题是第二个库扩展了第一个库。如何在类型定义中正确表达这一点?或者说这可能吗?
答案#1
所以你要做的是让扩展库的声明文件“增强”原始库。
redux-thunk 声明文件几乎就是这样做的:它扩展了 redux 的 Dispatch 接口。
欲了解更多信息,我写了一篇更详细的回答,介绍了如果你想增强另一个模块的不同可能性,这取决于你的声明文件是否需要是全局的。或者可以查看 TypeScript 手册中关于声明合并的页面。
如果你还有任何问题,我很乐意帮助🙂。