webpack 如何维修'TS2769:没有与此调用匹配的重载'

xmd2e60i  于 2023-01-30  发布在  Webpack
关注(0)|答案(3)|浏览(301)

软件包更新后,我突然得到奇怪的打字错误:
[tsl]C中的错误:..\UI\src\sagas.ts(40,21)TS 2769:没有与此调用匹配的重载。
最后一个重载给出了以下错误。“LOAD_IDS”类型的参数不能赋给“TakeableChannel”类型的参数。
sagas.ts对应的第39-41行为

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

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

TS错误是什么意思?如何修复它?

1.我的packages.json看起来像这样:https://pastebin.com/raw/nJ0cPNXb
1.也许同样重要的是:我的webpack.config.jshttps://pastebin.com/raw/JNdXTCMb

参考文献

oprakyz7

oprakyz71#

我也遇到了这个问题,但我问了我的同事,了解到以下解决方案:
redux-saga接受TakeableChannel<unknown>,这是一个action,所以你声明loadIds参数的类型是action的形式,如下所示:

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

fnx2tebb2#

我的同事最终教了我一个变通办法:
1.从原始import语句中排除相应的操作,例如takeEvery
1.使用as Eff导入所有操作,其中Eff是别名。
1.定义一个与原始操作同名的新常量。

import { put, fork, select, call } from 'redux-saga/effects' // <-- modified
import * as Eff from 'redux-saga/effects'  // <-- new

// ... 

const takeEvery: any = Eff.takeEvery;      // <-- new
const takeLatest: any = Eff.takeLatest;    // <-- new

据我所知,他的想法是明确地允许any类型。

**编辑:**我知道Facebook(作为React的开发者)确实明确声明不应该****使用继承,请参见https://reactjs.org/docs/composition-vs-inheritance.html

bprjcwpo

bprjcwpo3#

我可以通过强制转换variableThatRaisesIssue两次来解决这个问题:

variableThatRaisesIssue as unknown as any

相关问题