1. ホーム
  2. javascript

[解決済み] TS2769」を修復する方法。この呼び出しに一致する過負荷はありません'

2022-02-25 02:26:21

質問

パッケージの更新後、突然変なtypescriptエラーが発生します。

[tsl] ERROR in C:...\UIsrc¥sagas.ts(40,21) TS2769 です。この呼び出しに一致するオーバーロードはありません。

最後のオーバーロードでは、次のようなエラーが発生しました。 タイプ '"LOAD_IDS"' の引数は、タイプ 'TakeableChannel' のパラメータに割り当てることができません。

の39-41行目に相当します。 sagas.ts

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

機能 function* loadIds({ forceReload }) は、同じ sagas.ts とAPIを呼び出すだけです。

TSエラーの意味と修正方法を教えてください。

  1. マイ packages.json はこのように見えます。 https://pastebin.com/raw/nJ0cPNXb

  2. また、重要なことかもしれませんが、私の webpack.config.js https://pastebin.com/raw/JNdXTCMb

参考文献

解決方法は?

結局、同僚が回避策を教えてくれました。

  1. 対応するアクションを除外する、例. takeEvery を元の import ステートメントを使用します。
  2. ですべてのアクションをインポートします。 as Eff ここで Eff はエイリアスです。
  3. 元のアクションと同じ名前の新しい定数を定義します。
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