Redux Reducer with TypeScript
Feb 28, 2021
想像一個開發一個 Todo List ,使用 JavaScript 為 Add Todo 寫的 Redux Reducer :
改寫成 TypeScript 版本,先將 Action Type 改寫為 enum,再分為 state
和 action
寫 interface。Action 的 payload 會因為 Action Type 的情境而不同,所以先暫時寫 payload?: any
。
現在專心討論 interface Action 的 payload:
(1) 在 ADD_TODO
的時侯是 沒有payload 。
(2) 當 ADD_TODO_SUCCESS
的時侯是Todo的陣列,所以是 string[]
。
(3) 當ADD_TODO_ERROR
的時侯是錯誤訊息,所以是 string
。
分別為這三種情況寫成3個 interface,即可避免使用 any
。