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 EffwhereEff是别名的操作。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 次 |
| 最近记录: |