网站搜索

覆盖其他库扩展的 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 手册中关于声明合并的页面。

如果你还有任何问题,我很乐意帮助🙂。