Relevant line。为什么Redux.js“Dispatch”TypeScript接口有一个模板参数?
如果界面如下:
export interface Dispatch<S> {
<A extends Action>(action: A): A;
}
...和S
显然是不使用,那么它为什么存在?
我注意到S
在其他地方用于“商店”相关的事情,但如果它没有在这个界面中使用,我认为它不应该在那里。
Relevant line。为什么Redux.js“Dispatch”TypeScript接口有一个模板参数?
如果界面如下:
export interface Dispatch<S> {
<A extends Action>(action: A): A;
}
...和S
显然是不使用,那么它为什么存在?
我注意到S
在其他地方用于“商店”相关的事情,但如果它没有在这个界面中使用,我认为它不应该在那里。
具有状态类型参数S允许中间件在类型更加精确的 类型中。例如,thunk函数需要一个调度和一个getState():S,所以没有S就不能很好地输入。请参见本示例的这一这里 下面 https://github.com/Igorbek/redux/blob/ts-def-improv/test/typescript/dispatch.ts#L9-L16
幸得@Lucas用于查找来源。
你说得对,靠它自己看起来没什么意义。
我的猜测是他们已经这样做,以确保像middleware返回类似的调度功能。
对于像redux-thunk这样的中间件,new dispatch function确实使用了<S>
参数,但我不确定如果在这种情况下默认的参数不是这样会有什么影响。
您可以看到添加该接口的推拉请求以及此链接的推理:https://github.com/reactjs/redux/pull/1537 – Lucas