2

そのようなアクションを生成する場合:

export const updateParticularObjectValue = createAction(
    UPDATE_PARTICULAR_VALUE,
    (id: string, amount: number, reason: string = 'default') => { 
        return { id, value: amount, reason }; 
    },
);

何らかの理由で、私の IDE (そして実際には、私の typescript コンパイラ) は、アクション作成者を呼び出すと、3 つ目の引数を明示的に渡すと 2 つの引数しか期待できないと不平を言っています。オプションでクリエーターに 3 番目の引数をとってもらいたいのですが... redux-actionscreateAction関数を使用してこれを行う方法はありますか、それともアクション クリエーターを手動でビルドする必要がありますか?

PS -- この構文でも同じ結果が得られます。

export const updateParticularObjectValue = createAction(
    UPDATE_PARTICULAR_VALUE,
    (id: string, amount: number, reason?: string) => { 
        return { id, value: amount, reason: reason || 'default' }; 
    },
);

3番目の引数を任意の方法で作成しても、typescriptに変換されないようです-存在しないものとして扱われ、関数の呼び出しはそれを含めることを禁止します. これを回避する方法はありますか?

PPS -- typescript コンパイラを「だます」ことができれば (私の場合は、react コンポーネントで「connect」を使用するときにコンポーネントの Props タイプで関数インターフェイスを定義することによって)、正常に動作しますが、コンパイラの匂いテストに合格しません。明示的に呼び出すとき - これが発生する本当の理由はないようです。

PPPS -- この時点で、実行可能な解決策を見つけました。ただし、これが createAction の typescript 実装の制限である理由と、この状況により優れた/よりスマートな代替ソリューションがあるかどうかについては、まだ興味があります。適切な説明は、私自身とおそらく他の人にとって教育的です。

4

2 に答える 2