B--*_*ian 15 javascript typescript reactjs webpack
包更新后,我突然收到奇怪的打字稿错误:
[tsl] C:..\UI\src\sagas.ts(40,21) TS2769 中的错误:没有与此调用匹配的重载。
最后一次重载给出了以下错误。“LOAD_IDS”类型的参数不可分配给“TakeableChannel”类型的参数。
对应的第 39-41 行sagas.ts
是
function* watchIds() {
yield takeEvery(Actions.LOAD_IDS, loadIds);
}
Run Code Online (Sandbox Code Playgroud)
该函数function* loadIds({ forceReload })
的定义sagas.ts
与 API 调用相同。
TS 错误是什么意思,我该如何解决?
我的packages.json
样子:https : //pastebin.com/raw/nJ0cPNXb
也许也很重要:我的webpack.config.js
是https://pastebin.com/raw/JNdXTCMb
小智 5
我也遇到过这个问题,但是问了同事,了解到以下解决方法:
redux-saga 需要TakeableChannel<unknown>
. 这是一个动作,所以你声明 loadIds 的参数类型是这样的动作形状:
function* loadIds({
forceReload
}: {
type: string;
forceReload: any; // your forceReload type
}) {
// your code
}
Run Code Online (Sandbox Code Playgroud)
我的同事最终教了我一个解决方法:
takeEvery
从原始import
语句中排除。as Eff
whereEff
是别名的操作。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
Run Code Online (Sandbox Code Playgroud)
据我了解,他的想法是明确允许any
类型。
编辑:我知道 Facebook(作为 React 的开发者)明确指出不应使用继承,请参阅https://reactjs.org/docs/composition-vs-inheritance.html
归档时间: |
|
查看次数: |
21858 次 |
最近记录: |