软件包更新后,我突然得到奇怪的打字错误:
[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.js
是https://pastebin.com/raw/JNdXTCMb
3条答案
按热度按时间oprakyz71#
我也遇到了这个问题,但我问了我的同事,了解到以下解决方案:
redux-saga接受
TakeableChannel<unknown>
,这是一个action,所以你声明loadIds参数的类型是action的形式,如下所示:fnx2tebb2#
我的同事最终教了我一个变通办法:
1.从原始
import
语句中排除相应的操作,例如takeEvery
。1.使用
as Eff
导入所有操作,其中Eff
是别名。1.定义一个与原始操作同名的新常量。
据我所知,他的想法是明确地允许
any
类型。**编辑:**我知道Facebook(作为React的开发者)确实明确声明不应该****使用继承,请参见https://reactjs.org/docs/composition-vs-inheritance.html
bprjcwpo3#
我可以通过强制转换
variableThatRaisesIssue
两次来解决这个问题: