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