[英]How to repair a 'TS2769: No overload matches this call'
package更新后,突然出現奇怪的typescript錯誤:
[tsl] C 中的錯誤:..\UI\src\sagas.ts(40,21) TS2769:沒有與此調用匹配的重載。
最后一個重載給出了以下錯誤。 “LOAD_IDS”類型的參數不可分配給“TakeableChannel”類型的參數。
sagas.ts
對應的第39-41行是
function* watchIds() {
yield takeEvery(Actions.LOAD_IDS, loadIds);
}
function function* loadIds({ forceReload })
在同一個sagas.ts
中定義,並且只是 API 調用。
TS 錯誤是什么意思,我該如何解決?
我的packages.json
看起來像這樣: https://pastebin.com/raw/nJ0cPNXb
也許也很重要:我的webpack.config.js
是https://pastebin.com/raw/JNdXTCMb
我也遇到了這個問題,但是我問了我的同事,了解了以下解決方案:
redux-saga 采用TakeableChannel<unknown>
。 這是一個動作,所以你聲明 loadIds 的參數類型是這樣的動作形狀:
function* loadIds({
forceReload
}: {
type: string;
forceReload: any; // your forceReload type
}) {
// your code
}
我的同事最終教了我一個解決方法:
import
語句中排除相應的操作,例如takeEvery
。as Eff
導入所有操作,其中Eff
是別名。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
類型。
Edit: I am aware that Facebook (as developer of React) does explicitly state that one should not use inheritance, see https://reactjs.org/docs/composition-vs-inheritance.html
我可以通過兩次轉換variableThatRaisesIssue
來解決這樣的問題:
variableThatRaisesIssue as unknown as any
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.