首页 > 解决方案 > 如何修复“TS2769:没有超载匹配此调用”

问题描述

包更新后,我突然收到奇怪的打字稿错误:

[tsl] C:..\UI\src\sagas.ts(40,21) TS2769 中的错误:没有重载匹配此调用。

最后一个重载给出了以下错误。'"LOAD_IDS"' 类型的参数不可分配给 'TakeableChannel' 类型的参数。

对应的39-41行sagas.ts

function* watchIds() {
    yield takeEvery(Actions.LOAD_IDS, loadIds);
}

该函数function* loadIds({ forceReload })在相同sagas.ts的 API 调用中定义。

TS 错误是什么意思,我该如何解决?

  1. 我的packages.json样子是这样的:https ://pastebin.com/raw/nJ0cPNXb

  2. 也许也很重要:我webpack.config.js的是https://pastebin.com/raw/JNdXTCMb

参考

标签: javascriptreactjstypescriptwebpack

解决方案


我也遇到了这个问题,但是我问了我的同事,了解了以下解决方案:

redux-saga 需要TakeableChannel<unknown>. 这是一个动作,所以你声明 loadIds 的参数类型是这样的动作形状:

function* loadIds({
   forceReload
}: { 
   type: string;
   forceReload: any; // your forceReload type
}) {
   // your code
}

推荐阅读